ActionScript 誰かが物凄い勢いで解答するスレ 21
1 :
Now_loading...774KB :
2008/10/29(水) 14:33:43 ID:LszQCRY7
2get!!!
で、EvalはムリってことでFA?
使用ソフト Flash CS3 Windows 動作環境 Flash Lite 1.1 (携帯) モールス音みたいなパターンの音を出したいため、波形をループさせて、 任意の時間だけ再生させたいと思っています。 検索したら、Flash10 だとメモリ上に置いた波形を再生できるのは わかりましたが、携帯ではどうやったら良いのかわかりません。 波形の一周を配列で持たせてループすればいいのかと思ったのですが そもそも変数に持たせた数値を音として再生させる方法がわかりませんでした。 良い方法があれば教えてください。
5 :
Now_loading...774KB :2008/10/30(木) 02:50:01 ID:cx9VAK2O
はじめまして。 Flashでお問い合わせフォームを作っています。 それで、コンボボックスを使ってます。 このコンボボックスで、ユーザがリストから選択していないと エラーがでるようにしたいんですが、どういうアプローチをすれば いいかわかりませんでした。 ヒントとなる書き方を教えてください。 宜しくお願いします。
6 :
Now_loading...774KB :2008/10/30(木) 06:40:12 ID:lHf+4ypp
>>4 長音wavと短音wavを登録パターンで繰り返し再生とか
>>5 送信ボタン押した時点でエラーチェックでいんじゃね
7 :
5 :2008/10/30(木) 11:10:05 ID:BgfMsTWD
6さん 返信ありがとうございます。 そのエラーチェックの仕方が、テキスト入力系であれば わかるんですが、コンポーネント系のコンボボックスのようなものは、 どういうふうにデータが反映されているのか、ブラックボックスなところが ありよくわからないのです。 ”データが空だから、送れない”とうふうにエラーをだすんだとは 思うのですが。。 宜しくお願いいたします。
8 :
Now_loading...774KB :2008/10/30(木) 11:56:09 ID:bn05AhHk
同じMCを3つ置いて(「i1」「i2」「i3」)MC内の変数textに_root.p*[1]の値(*はMCのインスタンス名にあるiの後の数。「i1」なら_root.p1[1])を入れたいんですが text = _root.p + this_name.charAt(1) + [1]; とかいてもできませんでした。 text = "_root.p" + this_name.charAt(1) + "[1]"; とか text = eval("_root.p" + this_name.charAt(1) + "[1]"); でも無理でした。誰か分かりませんか?
>>8 text = _root["p"+this._name.charAt(1)][1]
>>9 わぁ!できました!
本当にありがとうございました!
AS2使っているものから質問です。以下のソースを書いたのですが、 for (; i<lo_array1.length; i++) { byogaA[0] = Number(lo_array1[i]); byogaA[1] = Number(lo_array2[i]); //書き込み用。()の中に数値が入る ////////////現在の描画位置 view_mc.moveTo(byogaA[0][i], byogaA[1][i]); ////////////現在の描画位置からここまで(その次の座標まで)線を引く。(本来ならbyoga[0][i]でいいはず・・・) view_mc.lineTo(byogaA[0][i++], byogaA[1][i++]); } lo_array1の中には配列データとして、[100,200,300,400]が入ってます lo_array2の中には同じく配列として、[10,20,30,40]が入ってます lo_array1はX座標としてlo_array2はY座標としてlineTo()とmoveTo()で使います。 動作としてはmoveToに書き始め地点を設定して、lineToまで線を引く、と言う動作なのですが、 このソースで試すと、何も描けて無く、lineToにもmoveToにも値が入ってません。 試しに view_mc.moveTo(byogaA[0], byogaA[1]); view_mc.lineTo(byogaA[0]+1, byogaA[1]+1); でしてみると、このときはデータが入ってます。配列の定義は出来ているので、 このソースのところに問題があると思うのですが、何が問題なのでしょう…? 二次元配列の設定がおかしいのでしょうか?
for文内で i++ を行っているから i の値がどんどんふくれあがっておかしいことになってる
でもそうしないと次の座標データを取り出せないです…… 何か案はありますか?
i++ は i + 1 じゃないですよ i += 1 ですよ
と言うか byogaA[1][i]としたら既に値が入ってないって言われるんですよね…… あ、もちろんvar i=1;で定義はしてあります。
毎回moveしてるのもよくわからんしなあ 普通にPointかObjectの配列でいいんじゃないか moveToやlineToなら、特に次の座標のデータいらんでしょ var lineData:Array =[ {x:50,y:0,action:"moveTo"}, {x:0,y:120,action:"lineTo"}, {x:100,y:120,action:"lineTo"}, {x:50,y:0,action:"lineTo"} ] lineStyle(3,0xFF0000); for(var i:Number=0; i<lineData.length; i++){ var p:Object = lineData[i]; if(p.action=="moveTo"){ moveTo(p.x,p.y); }else{ lineTo(p.x,p.y); } }
17 :
4 :2008/10/30(木) 15:32:50 ID:QOJDFOOc
>>6 > 長音wavと短音wavを登録パターンで繰り返し再生とか
ありがとうございます。
これだと再生速度が固定になってしまうので難しいのです…。
質問なのですが、openofficeのImpress(いわゆるPowerPoint)で作ったswfファイルを
Flex(ActionScript3.0)で操作するにはどうしたらいいのでしょうか。
Image.addEventListener(MouseEvent.CLICK,hoge);
Image.source = "***.swf";
funtion hoge(e:MouseEvent):void
{
var rootMc:MovieClip = Image.content as MovieClip;
trace(rootMc);
}
これでswfのrootをとってきて、currentFrameで現在フレーム数(どんな場合も2)もとってこれるのですが。
操作(nextFrame || gotoAndStopで次のページに切り替え)をできるようにする所までなかなかいけません。
これのやり方を教えてもらえないでしょうか。
Impressのswfはクリックしたらフレームが切り替わるように勝手に設定してあるみたいです。
これを制御して、ページを戻したりしたいです。
↓Impressで作ったswfの例(これをFlex(as3)で操作したい)
ttp://gonzo.dip.jp/~gonzo/cgi-bin/uploader2/upload.cgi?mode=dl&file=5377 DLKey:「swf」
>>19 × Image.addEventListener(MouseEvent.CLICK,hoge);
○ Image.addEventListener(Event.COMPLETE,hoge);
すみませんまた質問があります。インスタンス名が「mc1」〜「mc10」までのMCを10個設置して(同じMCです)、MC内の最初に a = Math.floor(Math.random() * 10); と書き変数aの数値を1〜10の値にします。次のフレームに if(a < 50) { a++; } else { for(略) stop(); } のようにaに1ずつ足していき50になったら足すのを止めるようにします。このときそのMC以外の9つのMCもfor等を使って同時に足すのを止めます。 私がしたいのは「aが50のMCを一つだけにする」事なんですが、最初のaの値が1〜10という少ない範囲なので、かなりの確率で50になるMCが複数でてきてしまいます。どうすれば一つだけにできるでしょうか?分かりづらくてごめんなさい……。
>>21 50になった複数のMCから1つ選んで、そのMC以外のaを49にすればいいんじゃない?
ちなみに
>a = Math.floor(Math.random() * 10);
だとaの値は0〜9です。
23 :
5 :2008/10/31(金) 18:19:47 ID:ALkzvGbP
レスが乏しいようなので 再度、投稿させていただきます。 そのエラーチェックの仕方が、テキスト入力系であれば わかるんですが、コンポーネント系のコンボボックスのようなものは、 どういうふうにデータが反映されているのか、ブラックボックスなところが ありよくわからないのです。 ”データが空だから、送れない”とうふうにエラーをだすんだとは 思うのですが。。 宜しくお願いいたします。
>>23 コンボボックスなら
(コンボボックスのインスタンス名).value
で今選択されてる値がとれる
コンポーネントインスペクタを開いて、コンボボックスなりチェックボックスなりをクリックすれば
属性一覧みたいのが見えるのでブラックボックスでもなんでもない
25 :
Now_loading...774KB :2008/10/31(金) 20:58:06 ID:+MGbo4lV
環境)OS:WinXP-Pro,Mem=3GB,開発ソフト:FlashCS3-Pro(Player9.0,AS3.0) AS3.0の配列の扱いで質問です。 文字列を格納した配列 dataGyou0[id] があり、この要素の番号を1つずらして別の配列 dataGyou1[id] に格納するため、for文で for (var id=0; id<101; id++) { dataGyou1[id] = dataGyou0[id+1]; // 1つ先を格納 trace ("Data= "+id+", "+dataGyou1[id]); } としたところ、以下のエラーが現れました。 ReferenceError: Error #1069: String にプロパティ 1 が見つからず、デフォルト値もありません。 at minitxt_fla::MainTimeline/extraction1() このError #1069について調べましたが、やはり原因が分かりません。 アドバイス願います。
26 :
25 :2008/10/31(金) 21:12:48 ID:+MGbo4lV
(自己レス) 原因が分かりました。 単純に、dataGyou0[id]への代入文でミスをしてました。
27 :
Now_loading...774KB :2008/10/31(金) 22:26:54 ID:+MGbo4lV
環境)OS:WinXP-Pro,Mem=3GB,開発ソフト:FlashCS3-Pro(Player9.0,AS3.0) 改めて質問します。AS3.0で文字列を配列化する場合で質問です。 配列 gyouRetu0[0] の中身がカンマ区切りの文字列 03, 09, 19, 22, 23, 21 であったとき、 これを更に gyouRetu1[0][id2] の形で2次元配列化するとき、 this.gyouRetu1[0] = this.gyouRetu0[0].split(","); for (var id2=0; id2<6; id2++) { trace ("youso= " + this.gyouRetu1[0][id2]); } と書いたところ、以下のエラーコードが現れました。 TypeError: Error #1006: split は関数ではありません この場合、文字列 03, 09, 19, 22, 23, 21 を str1 とおいて、単純に str1.split(","); とすると 問題なく配列に格納できましたが、上記の記述ではエラーが出ます。 何故、 splitが関数でなくなるのでしょうか? 問題点などをご指摘下さい。
>>27 単純に,this.gyouRetu0[0] の中身が文字列じゃないだけ。
それ以外に理由はない。
29 :
27 :2008/11/01(土) 01:20:54 ID:Pbh+1h9K
>>28 有難うございます。
this.gyouRetu0[0] → this.gyouRetu0[0].toString(); で文字列化して解決しました。
いや、中身をちゃんと文字列に直そうよ・・・
31 :
Now_loading...774KB :2008/11/01(土) 20:06:19 ID:nG2vKjv9
すみません!初心者です! 僕は親指を使って鼻くそをほじるのですが、それを友達に言ったら笑われました! 何がおかしいのでしょうか…?? 返答お待ちしております。
ActionScript2.0で AS3でいうStage.fullScreenSourceRectを実現させるには、 どうしたらいいのでしょうか。
>>32 すまん!自己解決
import flash.geom.Rectangle;
してなかっただけ。
AS2で質問です。動画から再生時間を取得して、動画の開始から3秒後、5,5秒後、8秒後で アクションを起こしたいのですが、そういった動作をするにはどうすればいいのでしょうか? 〜メソッドやハンドラを使えばいい等知っていることがあればおしえてください。
>>34 FLVPlayback.cuePoint
>>なるほど、cuepointですか…ありがとうございます。 続けての質問になってしまうのですが、そのcuepointを外部ファイルから指定する方法ってありますか? サーバにテキストファイルを置いて、その中に時間を入れて、それでcuepointを扱いたいのですが……
38 :
Now_loading...774KB :2008/11/02(日) 23:07:13 ID:dDU9b6xG
ActionScriptからJavaを実行出来ますか?
39 :
Now_loading...774KB :2008/11/03(月) 00:28:13 ID:RuqUCMl6
環境)OS:WinXP-Pro,Mem=3GB,開発ソフト:FlashCS3-Pro(Player9.0,AS3.0) addChildAt () で質問です。 このメソッドで追加オブジェクトの位置を指定するのはどうしたら良いでしょうか? AS2.0以前 では、例えばステージ上のmc1にabcというMCを、座標(100, 100)にnewABCという名で深度 depthで追加するとき prop = {_x:100, _y:100}; this.mc1.attachMovie("abc", newABC, depth, prop); と書けば良かったのですが、addChildAt () ではヘルプを見ても分かりませんでした。 よろしく願います。
>>39 AS3のaddChildAtはAS2のattachMovieとは違って連続しない深度に配置することはできない
深度はAS3では0,1,2,3・・・と0から始まり、仮に深度2にあるオブジェクトを削除した場合も自動的に0,1,2・・・と順繰りに詰められ、常に連続した深度になる
なので、100までしか深度がないのに、いきなり深度200に配置したりすることはできない
41 :
39 :2008/11/03(月) 01:04:31 ID:RuqUCMl6
>>40 なるほど、深度は連続するんですね。
ところで、本題の位置(座標)指定はどうすれば良いでしょうか?
43 :
39 :2008/11/03(月) 01:23:26 ID:RuqUCMl6
44 :
Now_loading...774KB :2008/11/03(月) 02:12:23 ID:hciVCrgl
あたり判定について クリックしたらランダムでオブジェクトをライブラリからステージ上に読み込む。という事をやり、ムービークリップ内でランダムに動くという制御をしてみました。 そこで、あたり判定を設けて種類の違ったオブジェクトがぶつかったらどちらか一方が消えるというアクションスクリプトを組みたいのですがうまくできません。 Mac OS X バージョン10.5.5 AS3.0 ○シーンのスクリプト○ this.stage.addEventListener(MouseEvent.CLICK,clickHandler); function clickHandler(evt:MouseEvent):void { var mcNiku:MovieClip=new niku(); var mcKusa:MovieClip=new kusa(); var a; a=Math.random()*10; if (a>5) { this.addChild(mcNiku); } else if (a<5) { this.addChild(mcKusa); } mcNiku.x=evt.localX; mcNiku.y=evt.localY; mcKusa.x=evt.localX; mcKusa.y=evt.localY; if (mcNiku.hitTestObject(mcKusa)) { this.removeChild(mcKusa); } }
45 :
Now_loading...774KB :2008/11/03(月) 02:15:23 ID:hciVCrgl
>>44 続きです
○オブジェクトのスクリプト○
var spanX = 10;
var spanY = 5;
var moveX = 5;
var moveY = 3;
var theX = this.x;
var theY = this.y;
addEventListener(Event.ENTER_FRAME,sansu);
function sansu(event:Event):void {
theX += moveX;
theY += moveY;
中略(壁に跳ね返るというスクリプト)
46 :
Now_loading...774KB :2008/11/03(月) 02:16:04 ID:hciVCrgl
>>44 >>45 さらに続きです。
this.x = theX;
this.y = theY;
var Rnd = Math.floor(Math.random()*20);
if (Rnd == 0) {
moveX = Math.random()*spanX*2-spanX;
moveY = Math.random()*spanY*2-spanY;
}
for(var i:int=0;i<parent.numChildren;i++){
var target:DisplayObject=parent.getChildAt(i);
if(target!=this){
if(hitTestObject(target)){
parent.removeChild(target);
break;
}}}}
オブジェクトを消すことはできたのですが
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
と出てしまいます。そして、消える際に同じオブジェクト同士がぶつかっても消えてしまうのです・・・
オブジェクトにぶつかったら種類の違う片一方のオブジェクトだけ消すということをしたいです。どうにかならないでしょうか?
>>44 mixiでも同じ質問してたよね
バレないだろうからってマルチはよくないですよ
しかもmixiのほうでサンプルコードまで作っていただいてるのに。
俺ならオブジェクトをそれぞれ別の配列に入れて
for文で走査して当たり判定処理する
48 :
Now_loading...774KB :2008/11/03(月) 03:52:00 ID:hciVCrgl
>>47 こちらに書き込んでから詳しいサンプルコードを発見いたしました。
どうもお騒がせしてすいませんでした。
これからはマルチしないようにします。
またアドバイスありがとうございます。
49 :
Now_loading...774KB :2008/11/03(月) 10:17:32 ID:ZQzgLA0O
fscommandのexecからなら可能じゃないかしら ActionScript広義には無理
51 :
Now_loading...774KB :2008/11/03(月) 11:50:38 ID:fEbbo2SP
文字列 "1 + 2"から3を得たいんだけど、何かいい方法ない?
>>51 足すだけならsplitでできた配列の中身を数に変換して全部足せばいいのでは?
54 :
Now_loading...774KB :2008/11/03(月) 12:07:19 ID:fEbbo2SP
>>52 >>53 氏のように+とか-とかを認識して計算させる関数を作ろうとおもったんだが
もっといい方法ないかな〜と思って…。
eval()すればいいだけだろ…
ちなみにASにevalはないという人はJS連携勉強してくれ
>>54 数式をパースするアルゴリズムならばググれば出てくるよ
めんどくさいならフリーのライブラリ捜すとか
>>55 ASでのevalとなんか間違えてないかw
>>58 eval("1+2")で3が返るってこと????
AS2で質問です。 USB接続したゲームパッドなどの 「アナログ」コントローラの値を取得できますか? 出来たらやり方を教えて頂けると助かります。
>>60 コントローラの値って何だ?
ゲームとかだったらキー入力でつくっといて、ゲームパッド使う人は
その人が自分でボタンをキーに割り当てるとかじゃね
>>59 function test(c) {
var v = null;
try { eval("v="+c); } catch(e) {};
return v;
}
これでcに"1+2"を入れて呼び出してvを返してやればいいでしょ。
入力、出力はJavascriptとFlash連携を勉強してくれ。
ちなみにvarをeval()の外に出しているのはクロスブラウザ対応。
Safariとかで不具合があるから。
>>62 それはJavaScriptのevalでASでのevalじゃないとw
65 :
60 :2008/11/03(月) 14:37:42 ID:OIGoQZLY
>>61 最近の家庭用ゲーム機の方向キーやボタンは
押したか押してないかだけでなく、
微妙な傾き加減(押した強さ?)を認識しますよね。
それによってゲーム内の車が軽く曲がったり、強く曲がったり。
そういうのをFLASHでも再現出来るのかなと思いまして・・・。
>>64 ASでのevalとJSでのevalはちがうと言いたかっただけ
ちゃんと説明しないとみんなが混乱する
>>65 PS3やWiiのコントローラーの機能をというのなら無理
自分でライブラリ作るだけの力があればできるだろうけどね
そうだったらゲームメーカーがハンティングするだろなw
くだらんやりとりめんどくさい。書くんじゃなかった。バイバイ。
70 :
60 :2008/11/03(月) 14:49:10 ID:OIGoQZLY
>>67 うわー
そうなんですかー
Wiiまでは無理にしても、
PS2のアナログコントローラくらいは再現できるのかと思ってました。
たしかに、巷にあるFLASHゲームで
パッドでアナログ入力出来るゲーム見たことないですもんね。
ちょっと残念です・・・。
回答、ありがとうございました!
71 :
Now_loading...774KB :2008/11/03(月) 15:25:13 ID:fEbbo2SP
JS連携のEvalはやっぱりブラウザでswfを動かした時しか 使えないんですかね?
72 :
Now_loading...774KB :2008/11/03(月) 20:32:50 ID:mhx4pVEs
環境)OS:WinXP-Pro,Mem=3GB,開発ソフト:FlashCS3-Pro(Player9.0,AS3.0) コンテナ内のオブジェクト(MC)の命名で質問です。 親コンテナ内にボタンを置き、これを押すことによって同じ親の下に for (var id = 0; id < 5; id++) で mc0 〜 mc4 のオブジェクト(MC)を追加したく思っています。 自分が試したAS(3.0)は以下の2通りです。 var ["mc"+id]:MovieClip = new BlueMark(); var this["mc"+id]:MovieClip = new BlueMark(); これでは両方とも、「identifier が必要です」という警告が出ます。 このような複数の命名をする場合にはどうしたら良いっでしょうか?
>>72 mc.name = "mc"+id;
呼び出しは
mc.getChildByName("mc"+id)
>>73 有難うございます! 出来ました。
更に、ライブラリのMCに
this.addEventListener (MouseEvent.MOUSE_OVER, mouseOnMC);
function mouseOnMC (evt:MouseEvent):void {
trace ("name= "+this.name);
}
を書いて、マウスでの名称確認が出来ました。
75 :
Now_loading...774KB :2008/11/04(火) 00:08:13 ID:3YbeyEa4
77 :
75 :2008/11/04(火) 01:16:27 ID:3YbeyEa4
>>76 レス有難うございます。
var test:String; としてdefaultFileNameを使って file.download (new URLRequest(url_txt.text), test);
としましたが、まだ同じエラーが出ます。
少なくとも、ダイアログは出て欲しいのですが、これも出ません。
78 :
75 :2008/11/04(火) 01:24:14 ID:3YbeyEa4
(連投スイマセン) 原因が分かりました。URLの最後の / が原因でした。 これを消して使うとOKでした。
改行消したいんだけど str.replace(/\n/g,"");でできねー!! 助けて!!
AS3なら対象のテキストの改行コードが\r\nか AS2ならそもそもreplaceも正規表現もないってとこじゃないか?
81 :
Now_loading...774KB :2008/11/04(火) 11:30:48 ID:Ae3GvRiq
ごめん…。マジバカだった。 str = str.replace(/\n/g,"");でいけた…
AS2のイベントハンドラで、 「FLASHが再生されたら」 「指定の値が入ったら」 と言うようなイベントハンドラはあるのでしょうか?
83 :
MAC :2008/11/04(火) 14:44:55 ID:lJYN/61g
雨粒のMCをランダムに配置するとこまで出来たのですが、 同じMCを繰り返し次々とランダムの位置に配置させるには アクションスクリプトはどうすればいいのでしょうか?? (Actionscript3.0です) 数時間ネットで調べてましたが分かりませんでした汗汗
>>82 AsBroadcasterは難しそうです……
FLASHを再生したときに他の動作が起きる前に
一番最初に外部ファイルをロードしてそれから動作、と言う風にしたいのですが…
>>85 じゃ、そういうふうに設計すればいいのでは?
最初のフレームでstop()させといて、外部ファイルロード完了でplay()とか、
他のアクション開始とかそんな感じではいかんのか?
87 :
Now_loading...774KB :2008/11/04(火) 22:29:36 ID:Eb4SA2Y0
環境)OS:WinXP-Pro,Mem=3GB,ソフト:FlashCS3-Pro(Player9.0,AS3.0) asファイル中の System.useCodepage の使い方で質問です。 外部Txtファイル(data01.txt)を読み込みテキストフィールドに表示したいのですが、日本語が文字化け するため、AS2.0以前のように System.useCodepage = true; としたいのですが(置き場所を含めた) 使い方が分かりません。 package{ }内の記述は以下の通りです。 import flash.net.*; // 使用するクラスのインポート(抜粋) ... import flash.system.*; // クラスの定義 public class Loading1 extends MovieClip { var fileLoader:URLLoader=new URLLoader; // コンストラクタ public function Loading1 () { System.useCodepage = true; //ここにこのように置いたらエラーになりました .... } } どうすべきでしょうか? アドバイス願います。
88 :
87 :2008/11/05(水) 00:34:50 ID:9i95TmVY
(自己解決) 試しにWeb上の記述を使ったところ上手くいきました。 原因は、AS2.0以前では useCodepage なのですが、3.0ではpが大文字になり、正しい綴り(?) useCodePage でなかったことです。
>>86 すみません、概念は解ったのですが、具体的にはどのようにすればいいのでしょうか?
一番上のレイヤーの一番上の行にstop();と置いてみたのですが、FLASHは止まってくれません;
90 :
Now_loading...774KB :2008/11/05(水) 12:37:50 ID:HcywkCdz
雨粒のMCをランダムに配置するとこまで出来たのですが、 同じMCを繰り返し次々とランダムの位置に配置させるには アクションスクリプトはどうすればいいのでしょうか?? (Actionscript3.0です) 数時間ネットで調べてましたが分かりませんでした汗汗
>>89 ということは、どこかでplay()を実行しているのでは?
>>82 がどういう構成のFlashを作っているかわからないので
これ以上具体的にはいえんです。
つか、Flashの基本知識があるのかないのかよくわからんな。
92 :
Now_loading...774KB :2008/11/05(水) 13:44:57 ID:fj3/rDCL
new RegExp("abc"+hoge+"def"); ってやると正規表現に変数を含められるけど / 〜 / を使う場合はどうすればいい? /"abc"+hoge+"def"/は、当然無理だった
93 :
Now_loading...774KB :2008/11/05(水) 14:18:58 ID:Qz+G8T0H
AS2のFLVPlaybackコンポーネントで skinAutoHideをtrueにするとマウスロールアウトでスキンが消えますが、 このスキンをフェードで消すことはできますか? スキンまでのターゲットパスが分かればtweenerなどでできそうなのですが…
>>91 どこもplay()はして無かったです。
あ、もしかしてFLVplaybackコンポーネントを使っていたら止まらなかったりしますか・・・?
>>94 そんなことはない。
とめたいのはFlvの再生なのか?
swfのメインタイムラインの再生なのか?
配置されたMCの再生なのか?
問題点が絞り込めてないなら、情報小出しにすんな。
やりたいこととFlashの構成をもっと詳細に書いたほうがいい。
AS3.0で所定の場所にあるDES方式で暗号化された画像を復号化して表示させるFlashを作成しています。
第一段階として暗号化されていない画像を表示させるのは成功しました。
しかし、キーとなる復号化の方法がわかりません。
下記のサイトを参考に"As3Crypto"を使用したやり方で試みていました。
ttp://labs.unoh.net/2007/08/phpflash.html まだ初心者なので使用方法等が良く分かっておりませんので、
サンプル等を記載して頂けると大変助かります。
よろしくお願いします。
ブラウザからGETで変数を受け取っているんですが その変数を扱う必要のある部分を子パッケージに 書いてしまいました。 変数を下のパッケージで受け取る方法はないでしょうか?
>>92 var hoge = 'hoge';
var TEST = new RegExp("abc"+hoge+"def");
trace(TEST);
してみるとちゃんと//入ってるけど?
>>90 function addMC():void{
clearInterval(timerID);
var MC = new ame();
MC.x = Math.random()*100;
MC.y = Math.random()*100;
addChild(MC);
duration = 1000;
timerID = setInterval(addMC, duration);
}
var duration = 1000;
var timerID = setInterval(addMC, duration);
101 :
Now_loading...774KB :2008/11/06(木) 08:53:43 ID:0y3hkywU
102 :
Now_loading...774KB :2008/11/06(木) 09:46:14 ID:0y3hkywU
function addMC():void{ clearInterval(timerID); var MC = new ame(); MC.x = Math.random()*100; MC.y = Math.random()*100; addChild(MC); duration = 1000; timerID = setInterval(addMC, duration); } var duration = 1000; var timerID = setInterval(addMC, duration); この場合"ame"はMovieClipのなまえですか?それとも・・・? ”未定義である可能性が高いメソッドameの呼び出しです。” というエラーが表示されるのですが・・・
>>102 おまいが「雨粒MC」って書いてるからだろw
104 :
Now_loading...774KB :2008/11/06(木) 10:42:26 ID:0y3hkywU
インスタンス名やMCを色々ameと名づけてみましたがエラーが消えないんです汗
>>102 は自作のameクラスを使ってると思うから
ameクラスがないとそのままコピーしても動かないんじゃない?
繰り返し処理する部分を見つけてそこを利用すればいいと思う。
自分で書いたソースを貼ってないんだから、
誰かが書いた物がそのまま利用できる分けないじゃない。
>>104 やる事としては逆だな。
ameのところを自分が使ってるに都合のいいように変えるんだ。
> 同じMCを繰り返し次々とランダム
とあるから、
var MC = new ame();
を
var MC = MC名;
にして
addChild( MC )を無くしたら動くんじゃないか?
107 :
106 :2008/11/06(木) 11:18:16 ID:4bK/B7tE
あーすまん。 × ameのところを自分が使ってるに都合のいいように変えるんだ。 ○ ameのところを自分に都合のいいように変えるんだ。
108 :
Now_loading...774KB :2008/11/06(木) 11:41:32 ID:0y3hkywU
インスタンス名を”MC”にして var MC = new ame(); を削除したところ エラーは消えました。 > 同じMCを繰り返し次々とランダム に関してなんですけど今のままでは ランダムの位置に現れては消えの繰り返しなんです。 つまり常に画面には一つしかMCが現れません。 これをできれば、現れたものは消えないように、 つまり、現れるたびに数が増えるようにしたいのですが、 どうでしょうか?? 非常に今惜しいところまで来ています。 どうぞ力を貸してください!
109 :
106 :2008/11/06(木) 12:44:24 ID:4bK/B7tE
110 :
Now_loading...774KB :2008/11/06(木) 13:22:15 ID:0y3hkywU
あ、本当だっ! 出来ました!ほんとに助かりました! ありがとうゴザイマス
111 :
Now_loading...774KB :2008/11/06(木) 17:32:48 ID:Y7Z94vPg
>>92 ごめん、説明が不足しすぎてた
そういう意味じゃなくて
AS3で//を使うとRegExpインスタンスが返るじゃないか。
それを使って変数の内容を含めたいっていうこと
ようするに
new RegExp("abc"+hoge+"def"); と同じことを
//演算子を使ってやるにはどうすればいいの?っていう質問がしたかった。
ゴメソ
52:getlocal1 stack: flash.display::DisplayObjectContainer? scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display:: InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ flash.display::MovieClip$ _fla::MainTimeline$] _fla::MainTimeline locals: _fla::MainTimeline? flash.display::DisplayObjectContainer? int int int flash.display::DisplayObject? flash.display::DisplayObject? 53:getlocal 4 stack: flash.display::DisplayObjectContainer? int scope: [global Object$ flash.events::EventDispatcher$ flash.display:: DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ flash.display::MovieClip$ _fla::MainTimeline$] _fla::MainTimeline locals: _fla::MainTimeline? flash.display::DisplayObjectContainer? int int int flash.display::DisplayObject? flash.display::DisplayObject? 55:dup stack: flash.display::DisplayObjectContainer? int int scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display:: DisplayObjectContainer$ flash.display::Sprite$ flash.display::MovieClip$ _fla::MainTimeline$] _fla::MainTimeline locals: _fla::MainTimeline? flash.display::DisplayObjectContainer? int int int flash.display::DisplayObject? flash.display::DisplayObject? こんな感じのエラーが何十個も出て、スタックオーバーフローが出たんですが、一体原因は何でしょうか? エラーからわかりますか?
結構初歩的な質問だけど、 this.moveTo(100,100); は描画位置を(100,100)において、 this.lineTo(200,100); は(200,100)まで線を引く、んで、次の描画位置を(200,100)に置く、で良かったっけ? 後、lineToの中に数字じゃないデータが入ってたら勝手に0になっちゃうんだけど、これって仕様?変えられないの?
>>114 数字じゃないときはlineToを行わないようにしてみたら。
学び始めてもいない初心者です これが出来るか出来ないかで、Nscripterにするか吉里吉里にするか決めようと思っています。 文章を表示するとき、 ファミコンのドラクエや探偵物や逆転裁判などみたく、 一文字ごとに音を出す表現って出来ますか? 文章が表示されるとき「ポポポポポポ・・・・」みたいな音が鳴るアレです
ごめんなさい エロゲ製作のNscripter質問スレと間違えました
stageにNnというムービークリップが配置してあります。 stageには this._jk = 4423; Nnのなかには trace(parent._jk); と書いています。 これだとプレビューしたらエラーになるんですが、どこがおかしいんでしょうか?
>>118 AS2とか3とかの環境を書く
エラーが出たならそのエラーをコピペする
これだけでレス率が大幅にうpする
120 :
Now_loading...774KB :2008/11/08(土) 14:33:42 ID:5DQWY+wB
環境)OS:WinXP-Pro,Mem=3GB,ソフト:FlashCS3-Pro(Player9.0,AS3.0) for文によるインスタンス名指定で質問です。 ステージ上に置いた画像MC(isM0〜isM5)がそれぞれ常に同じYの位置にあるように 以下の記述をasファイルに書きました。 public function SlideFig_01 () { // コンストラクタ this.addEventListener (Event.ENTER_FRAME,onFrame); } public function onFrame (frameEvt:Event) { // 動作 for (var id=0; id<6; id++) { this["isM"+id].y=this["isM"+id].y; } } これだと下の警告が出ます。 ReferenceError: Error #1056: SlideFig_01 のプロパティ isM0 を作成できません。 at flash.display::Sprite/constructChildren() at flash.display::Sprite() at flash.display::MovieClip() at SlideFig_01() ググってみると、「名前空間internalにインスタンス名の矛盾が生じている」が原因らしいので 試しにコンストラクタ内に public var isM0:MovieClip; をいれてみたところ今度は、 1114: public 属性はパッケージ内でのみ使用できます。 という警告が出ます。どうすべきでしょうか?
122 :
120 :2008/11/08(土) 16:12:09 ID:GlmcCk0s
>>121 レス有難うございます。for文を
for (var id=0; id<6; id++) {
var mc:MovieClip = new MovieClip();
mc.name = "isM"+id;
Stage.getChildByName ("isM"+id).y=Stage.getChildByName ("isM"+id).y;
}
と変えましたが、相変わらず「プロパティ isM0 を作成できません」が出ます。
問題点はどこでしょうか?
getChildByNameは表示リストに登録されているインスタンスに対して 行う処理だから、addChildしてないとだめでしょ
>>115 レスありがとう。
再度質問と言うか、確認になるんだけど、moveToは描画位置を決定だよね?
何故かどうやっても(0,0)に飛んじゃうんだよね……
以下がソース
var lo = 0;
view_mc2.moveTo(z[0][0],z[1][0]);
for (var i = 0; i<=z[0].length; i++) {
if(byogaA[0][lo] == "p"){
view_mc2.moveTo(z[0][lo+1], z[1][lo+1]);
lo=lo+1;
}else{
view_mc2.lineTo(z[0][lo], z[1][lo]);
lo=lo+1;
}
z[0]には[100,200,p,300,400]
z[1]には[1,2,p,3,4]
って入ってる。
最初は(100,1)から始まらないといけないのに、何がおきたのか画面の左端から(100,1)に
線が引かれてる。マジで意味解らんっす。
誰か詳しい人居たら教えて……
>>124 やりたいことは、こういうこと?
point = new Object();
point.x = [100, 200, "p", 200, 100, 100];
point.y = [100, 100, "p", 200, 200, 100];
//
mc = this.createEmptyMovieClip("view_mc2", this.getNextHighestDepth());
mc.beginFill(0xCCCCCC, 100);
mc.lineStyle(1, 0x000000, 100);
mc.moveTo(point.x[0], point.y[0]);
for (var i = 0; i<point.x.length; i++) {
if (typeof (point.x[i]) == "number") {
mc.lineTo(point.x[i], point.y[i]);
}
}
mc.endFill();
>>119 すいません、Actionscript3.0です。
エラーは「1119: 未定義である可能性が高いプロパティ _jkに静的型flash.Display:DisplayObjectContainer の参照を使用してアクセスしています。」
です。
>>126 ×trace(parent._jk);
○trace(MovieClip(parent)._jk);
>>126 AS3はよくわからんのだけど
_jk ってなに?
ただの変数なら、
var _jk:Number;
とかで宣言してる?
>>127 MovieClip()がいるんですか!
2.0まではそんなのいらなかったのに……
よければ理由を教えて頂けませんか?
>>128 ただの例なので変数名に理由はないです
あと、this._jk としているのでvarや型指定は必要ないです。
>>123 すいません。どうしても出来ません。コンストラクタ内に
for (var id=0; id<figsNum; id++) {
var mc:MovieClip = new MovieClip();
mc.name = "isM"+id;
this.addChildAt (mc, id);
}
を書いたのですが、これでも(2つのfor文を書いても)同じ警告が出ます。
なお、これら2つのfor文部分を削除しても同じ警告が出ます。
もっと根本的なところに原因があるのでしょうか?
>>131 そもそも何か間違ってない?
>ステージ上に置いた画像MC(isM0〜isM5)がそれぞれ常に同じYの位置にあるように
ってのを
>Stage.getChildByName ("isM"+id).y=Stage.getChildByName ("isM"+id).y;
って書いてるけど、これじゃ意図したようにyの値が変わらないと思うんだけど?
var newY = 100;
for (var id=0; id<6; id++) {
var mc:MovieClip = new MovieClip();
mc.name = "isM"+id;
stage.addChild(mc);
stage.getChildByName("isM"+id).y = newY;
}
>>132 これじゃ意図したようにyの値が変わらない
6個のMCは常に個々に平行移動するので、Y値は一定です。
なお、提示頂いた記述を試しにコンストラクタに貼っても、同じ警告が出ます。
135 :
134 :2008/11/09(日) 03:41:19 ID:U0dWPLgJ
あぁ、Y値が一定か。Xが一定で組んでしもたw
>>134 有難うございます。動く座標軸は違いますが、これが大よその求める形です。
最終的には、端の1個をドラッグすると、他が追従して動くようにしたく思います。
Flash CS3でAS3で書いてるのですが、 gotoAndStopで飛んだ先のフレームで、 ステージに配置してあるムービークリップにスクリプトで初期設定をしようとすると、 インスタンス名に対応する変数がnullになっていることがたまにあります。 そういうときは、getChildByNameでも取得できませんでした。 フレームに書いたアクションの開始時にはインスタンスの生成は完了してなくて、 ENTER_FRAMEイベントか何かまで待つべきということなのでしょうか? それともそんなはずはなくて、別の問題を疑うべきですか? nullになってる変数・インスタンスの名前を変えたら直ってしまったので、 今すぐに試すことはできないんですが。 (過去には名前を変えても直らなかったときもありました) 問題が起き始めたときは、そのインスタンスをいじってた訳じゃないのが 気持ちの悪いところです……
actionscriptで「\」を使おうとするとソースが駄目になるんだけど、どうにかならない? var f: Array = file.split("\"); ってしたいんだけど……因みにfileの中身はアドレスになってるんで、fileを変えるのはムリッぽい。 誰か教えてください。
AS3.0です var pr:Array = [{num:56, id:"mochi1"}, {num:34, id:"kaki"}, {num:34, id:"gumi"}]; この場合、sortOnを使ってnumの小さい順に並び変えることはできたんですが "kaki"と"gumi"の並び方がランダムになってしまいます。 numの小さい順に、かつnumが同じならばidのアルファベット順に並べるにはどうすればいいでしょうか?
>>141 比較関数……ですか?
初心者なもんで、どういう風にすれば
>>140 のような動作になるのかわかりません。
教えてくれませんか?
144 :
Now_loading...774KB :2008/11/09(日) 20:33:15 ID:Uc55NB0D
OSはWinXP-Proで、開発ソフトはFlash-CS3-ProのAS3.0です。 ライブラリMCからリンケージ指定されたasファイルから、親(stage?,root?)のドキュメントクラスの 変数へアクセスするにはどうすれば良いのでしょうか? AS2.0以前なら、例えばrootの変数 cons0=100; の場合、パス設定で _root.cons0 や、あるいは this._parent.cons0 とすれば良かったのですが、AS3.0での記述は調べても全く分かりません。 試しに、var myParent:MovieClip = parent as MovieClip; や ドキュメントクラスを oyaClass などとして、ライブラリMCのasファイルで trace ("cons0= "+myParent.cons0); trace ("cons0= "+stage.cons0); trace ("cons0= "+MovieClip(root).cons0); trace ("cons0= "+oyaClass .cons0); としましたが、どれも駄目でした。アドバイスを願います。
>>144 自分自身でどこに変数を置いたのか把握しないと場当たり的な対処から抜け出せないような…
例えばthis.xxx=100;
とかならtrace(this);でthisが一体何を指してるのか確かめてみるとか
AS2で質問です。 PHPにデータを送る時に、PHP側の処理で $data = $_POST['paramname']; ってしてるんですけど、flashで'paramname'を指定する時の方法ってどうするんですか? send_vars.sendAndLoad('URL',"paramname="+send_vars, 'POST'); でして見たけど駄目でした。だれか助言ください。
>>147 send_vars.paramname = "aaa";
send_vars.sendAndLoad('URL',send_vars, 'POST');
ヘルプ見れば例が書いてあるでしょ。
JW FLV Media Player 4.2
http://code.jeroenwijering.com/trac/browser/tags/mediaplayer-4.2 ←ソース
これを使ってRSSでプレイリストを作ってFLVを読み込んでるんですが
読み込むURLをFLVではなくニコニコ動画などのように「file=〜」
のようなテキストファイルを読み込んで
そこからFLVを読み込みたいと思っております
具体的にはvideo.phpというの作って「video.php?no=○○」
これの中身が「video=http%3A%2F%2Fexample.com%2Ftest.flv」
というURLEncodeされた形で出るようにしました。
このvideo.phpをRSSの再生ファイルとして読み込むとloadVariablesで
「video=http%3A%2F%2Fexample.com%2Ftest.flv」を取り出し
http://example.com/test.flvを再生出来るようにしたいのです 。
com\jeroenwijering\models\VideoModel.asの73行目で動画を読み込んでいるのは分かったのですが
loadVariablesを組み込む箇所が分からずエラー多発です。
半年ほど前にもここで挫折して一度とん挫しました
どなたかお助け下さい
>>147 出来ないです……この例ではパラメータ名がaaaになるのですよね?
paramnameなんてのは無いので、調べたら
send_vars.params = "aaa";
となりましたが、結局出来ません……
あんまり自信が無いんで確認ですけど、
$data = $_POST['paramname'];
のソースでは、パラメータ名がparamnameになりますよね?
>>150 はあ?お前なんか勘違いしてないか?
send_vars.paramname = "aaa";
このparamnameは変数だよ変数!プロパティじゃないの!
send_vars.params = "aaa";って書いたら
PHPも$data = $_POST["params"];で受け取らなきゃだめだろうが一回死ね!
>>151 一回死んできました。
どうもありがとうございました。お陰さまで助かりました!
>>146 144です。レス有難うございます。
ドキュメントクラス(oyaClass), ライブラリMCのasファイル,メインタイムラインのフレーム1
およびMCのタイムライン1 各々に trace(this); を置きました。
それぞれ、出力として得られたのですが、Flash8のようなパスは表示されず、それぞれが持つ
クラス名が表示されるだけでした。 例: this: [object oyaClass ]
の表示を利用した変数アクセスする方法がまだ分かりません。
何かヒントを願います。
(日本語が変でした) [正] この表示を利用して変数にアクセスする方法がまだ分かりません。
Flashでメールフォームを作っているのですが、 送信すると本文などのほかに「〜が入力されていません」などのメッセージを表示するテキストボックスの内容も一緒に送信されてしまいます。 名前と本文だけ送信したい、というように送信する変数などを指定する方法を知っていましたらご教授お願いいたしますm(__)m
>>154 メインタイムラインにstrという文字変数があるとすると
trace(MovieClip(this.parent).str);
とかじゃね
いずれにしろAS2と3は全く違う言語と思って1から勉強した方が良いよ
160 :
Now_loading...774KB :2008/11/11(火) 16:35:53 ID:nFHZxBxU
すごく初心者な質問で恐縮です。。 下記のAS(2.0で作成 Flash8Pro使用)なのですが、ifを使って、 マウスオンした時のみスクロールが止まるようにしたいのです。 _root.jpg_mc._x = 0; _root.jpg_mc.onEnterFrame = function(){ this._x += 1; } 初心者なもので、どなたか教えて頂けないでしょうか。
>>160 onRollOverとonRollOutでflgのオンオフして
onEnterFrameではそのflgで移動するかどうか決める
>>159 144&154です。
有難うございます! MovieClip(this.parent).xxx で参照できました。
フラッシュと言うよりはプログラムの構造になるのだろうか 勉強のためドラクエの戦闘システムもどきを作ってるのですが コマンドを選んだ後の戦闘開始の処理方法で知恵熱が出そうです 処理的には(AS2.0) @キャラクター毎のやる事を格納した配列?(test=[]こんなの)を呼び出し ちなみに中身は(誰が、何を、誰に)てなってます Aキャラとモンスターの「すばやさ」を基準に降順ソート Bソート結果を順番に処理。例えば攻撃だったらば 1、配列をコマンド用functionに代入2、エフェクト発生、3、ダメージ計算4、生存判定5、次の人へ (@の配列をforで【現在生存している味方+敵】の分だけ処理) C全員終わったら終了。次のターンのコマンドを選択 もう四六時中プログラムの事を考えてますが一向に終わる気配がありません 長くなりましたが処理的にはこれで戦闘ができると思いますか? もし良かったら一般的な戦闘プログラムの参考になる物も教えていただけると本当に助かるのですが・・
>>163 >(@の配列をforで【現在生存している味方+敵】の分だけ処理)
これがどうかな。
forループは、ループを抜けない限り描画更新されない。
したがってエフェクト発生が同時におこってしまうと思う。
forループが有効なのは、いっせいに同じ処理を複数のターゲットに対して行う場合。
戦闘中は、setIntervalかonEnterFrameで状況を確認するのがいいと思う。
>>163 一度に多くのことを達成しようとすること自体が問題じゃね?
動作を圧縮(例:モンスターを1匹,ダメージ計算なし)して始めるべし。
AS2.0なら、20行程度で済むハズ。
>>163 全体の動きを管理する関数を一つ作ればいいんじゃない?
キャラの攻撃、敵のダメージなど各々の動きの後に必ずその関数を呼んで、
そこで次の動きを決めてあげる。
空のムービークリップを作って、線を引きたいんだけど、 createEmptyMovieClip("mc2", 0); mc2.moveTo(A[0][0],A[1][0]); mc2.lineTo(A[0][1],A[1][1]); ってすると最初に左隅から描画が始まる。createEmptyMoviClipの初期設定で 左上隅が基準点になっているのはわかったけど、この基準点を(A[0][0],A[1][0]) に変えることって出来ないの? あ、使ってるのはAS2です。
足し算すりゃいいだろw
>>168 初心者なもんでよくわかりません。具体的にどういうことですか?
mc2.moveTo(0+A[0][0],0+A[1][0]); ってこと?違うか;
>>167 とりあえずMCの基準点をスクリプトで変えるのは無理。
それを考慮してmoveToで開始位置決めて書くだけ。
ってことは書き方字体は↓であってるんだよね? Aには数値が入ってるからその数値が座標になる……はず; createEmptyMovieClip("mc2", 0); mc2.moveTo(A[0][0],A[1][0]); mc2.lineTo(A[0][1],A[1][1]); わからん、何がいかんのやろ……
>>171 moveToの前に、
mc2.lineStyle(1,0x000000,100);
とかlineStyleいれてみ。
解った気になってなんでも省略しようとしないで、
正確にやったほうがいい。
質問です。 Tabキーを押すとコントロールのフォーカスが移動されてしまうんですが,なにかこれを防ぐすべがありますでしょうか? ご教示願います。 よろしくお願いします。
174 :
163 :2008/11/12(水) 21:00:00 ID:wS5rYh4I
>>164-166 もう本当にありがとうございます・・
回答の意味すらいまいち理解できないので基礎固めをしよう思います('A`;
forの件だけでも十分勉強になりました。
20行とありましたがさっき合計したら1000行は行ってますし・・
最後にプログラムの間に何秒か時間をかませられないのでしょうか。
enterFrameとfpsを利用して無理やりカウントさせてましたがなんか非効率な気がしまう
176 :
Now_loading...774KB :2008/11/13(木) 04:53:12 ID:pA8sYmaG
hoge
177 :
Now_loading...774KB :2008/11/13(木) 15:06:38 ID:pA8sYmaG
xmlから読み込んだ値をBoolean値にするには?
>>177 xmlの読み込みが解らないのか、Boolにするのが解らないのか?
また、どういうデータをBoolにしたいのか書け
IOErrorEvent の使い方なんですがアドバイスをいただけるとうれしいです。 作っているものは、連番の画像を EnterFrame で切り替えて、 gifアニメの要領で再生したり逆再生したりとかやろうとしているのですが、 ファイルが無いときのエラー処理がうまく行きません。 いろいろ調べて見てきたサンプルを参考に(ほぼまるパクリ)で書いて、 LoaderオブジェクトにIOErrorEvent.IO_ERRORをリスナーさせているのですが エラーの表示が出てしまいますし、処理も行われません。 このクラスのインスタンスを作って、play()で再生したりするのですがどこが問題でしょう? public class StopMotion extends Sprite { // 画像パス関係 public var workDir:String = "img/"; public var workPath:String = ""; public var workNumber:int = 0; public var workURI:URLRequest; // Loader 関係 public var workLoader:Loader = new Loader(); public function StopMotion() { addChild(workLoader); // インスタンス生成時に登録 workLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); }
public function ioErrorHandler(e:IOErrorEvent):void { // コマ送りを停止させるメソッド stop(); } public function play():void { addEventListener(Event.ENTER_FRAME, onEnterFrameHandler); } public function onEnterFrameHandler(e:Event):void { // パスをセットして workPath = workDir + String(workNumber) + "/" + String(workNumber) + "_" + String(currentFrame) + ".jpg"; workURI = new URLRequest(workPath); // 読み込み workLoader.load(workURI); }
>>179 hogeLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorFunc);
じゃない?
>>177 やっぱヘルパ関数を自作するしかないんでない?
public static function toBoolean(value:String):Boolean {
return (value.toLowerCase() == "true");
}
var b:Boolean = Utils.toBoolean(myXML.@foo);
自分はこんな感じで使ってるよ。
"true"以外だったらfalseになるけど、そういう仕様と思えば困んないし。
>181 ありがとうございます。 contentLoaderInfoのリスナー登録だったのですね。 見てたサイトが間違っていたのか、見逃していたのか…。 簡単なことですみませんでした。
as3のエラーで、iinit()ってのがたまに出てくるのですが、 このinitではなく、iinit()ってなんで、iがiiと続くのでしょうか、、、? TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at TypeClass$iinit()
キューポイントを配列から生成したいんだけど、いまいち上手くいかない。 for (var a = 0; a<lotmarray.length; a++) { var ti:Number = Number(lotmarray[a]); var ob:String = "aaaa"+a flvPlayer.addASCuePoint(ti,ob); // AS キューポイントを追加する } で、この後キューポイントがきた時の処理。 っていう風にしたいんだけど、上手くいかず、変数tiには値が 確かに入っているのにaddASCuePointに入れる時に上手くいかなくなる。もしかして変数使えなかったりします? もしくは、おかしな所がありますか… lotmarrayには[2.9,7,894,12.34,12.56]が入ってます。
>>185 キューポイントオブジェクト作って配列に入れとくとかじゃね
ヘルプ見れば載ってる
187 :
Now_loading...774KB :2008/11/14(金) 18:31:45 ID:7PSwkpK7
環境)OS:WinXP-Pro,Mem=3GB,ソフト:FlashCS3-Pro(Player9.0,AS3.0) オブジェクトの色のRGB値取得で質問です。 ステージ上にMC0(青色)があり、これを押すことによりMC0のRGB値を取得したいのですが 上手くいきません。Webや本で調べて、asファイルのコンストラクタ以下は次のように書きました。 public function MainClass_of_Color_02 () { this.buttonMode=true; this.addEventListener (MouseEvent.CLICK, MC0_preassed); } // public function MC0_preassed (mouseEvt:MouseEvent) { var thisColor0 = new ColorTransform(this); trace ("MC0_preassed: "+this+", "+thisColor0.color); } 本来ならtrace()で #0000FF と表示したいところなのですが・・・ どうしたら良いでしょうか?
1〜100までの数値をランダムに代入して、予め決めておいたグループのどれに当てはまるかを求めたいのですが簡単な方法が思いつきません グループは4つで、 Agroup=1,5,6,8,13,16… Bgroup=2,3,4,9,14,19… Cgroup=10,15,18,23… Dgroup=7,11,12,17… みたいな感じに予め決めてます。法則はありません。 r=Math.floor(Math.random()*100)+1; if(r==1){ trace("Aグループ"); }else if(r==2){ trace("Bグループ"); }else if(r==3){ trace("Bグループ"); }else if… のようにすれば一応できますが行数が増えるので…… どなたか簡略できる記述分からないでしょうか?SWF6です
>>188 グループを配列にする
forループで配列の項目の値とrの値の一致をチェックする
190 :
106 :2008/11/14(金) 20:20:10 ID:dWWauUnT
>>188 単純に100個の配列に登録しておけばいいだけじゃん?
var array = new Array();
//以下登録
array[1] = "Agroup";
array[2] = "Bgroup";
array[3] = "Cgroup";
array[4] = "Bgroup";
//////(略)///////
//以下表示
var r:int =Math.floor(Math.random()*100)+1;
trace( "rは" + array[r] + "です" );
うげ。名無しで書き込んだつもりが・・。すんませ。106じゃないです。
そっか、絶対にどこかのグループに属しているなら、 最初からグループのどれかを選べばいいんだ
193 :
188 :2008/11/14(金) 20:58:15 ID:psKpFL+Q
>>189-190 ありがとうございます。
>>189 さんのヒントを見て苦労してなんとかできました。
>>190 さんのレス、できてから気づきましたorz
確かに
>>190 さんの方法は簡単ですが、でもそれだと結局100行もいる気がするんですが…
ちなみに下の方法でできました
group1=[1,2,3];
group2=[4,5,6];
group3=[7,8];
group4=[9,10];
for(i=1;i<=4;i++){
for(ii=0;ii<=eval("group"+i).unshift();ii++){
if(r==eval("group"+i)[ii]){
if(i==1) trace("グループA");
if(i==2) trace("グループB");
if(i==3) trace("グループC");
if(i==4) trace("グループD");
}
}
}
var gropes = { A:[1,2,3,4,5], B:[6,7,8,9,10], C:[11,12,13], D:[14,15,16,17] }; var hoggegege = function(source, num){ for(var i in source){ var len = source[i].length; for(var l=0;l<len;l++){ if(source[i][l]==num) return i; } } }; trace( hoggegege( gropes, 1 ) ); // A trace( hoggegege( gropes, 7 ) ); // B trace( hoggegege( gropes, 15 ) ); // D
195 :
190 :2008/11/14(金) 21:47:16 ID:dWWauUnT
>>193 > でもそれだと結局100行もいる気がするんですが…
いやいや、そんなのは書き方の問題
var groups:Array = new Array();
group1=[1,2,3];
group2=[4,5,6];
group3=[7,8];
group4=[9,10];
for(i=1;i<=4;i++){
for(ii=0;ii<=eval("group"+i).unshift();ii++){
r=eval("group"+i)[ii])
groups[r] = i;//これで登録
}
}
}
//以後使うときは
var r:int =Math.floor(Math.random()*100)+1;
trace( "rは" + groups[r] + "です" );
この方が処理時間は遙かに速いよ。O(1)ですから。
まあ判定が一回しかないならいらないけどね。
未だにActionScript2.0に依存してるんだけど 実際3.0に頑張って移行した人ってやっぱり慣れると3.0の方が良く感じるんでしょうか? 処理時間とかの話は抜きにして
>>196 ここだけの話だけど、3.0というかPlayer9.0の動作が変。
特に文字列検索がおかしい(例:while文で変なところでbreakする)
あとCS3では、編集している以外の(単に開いてはいるがマウスポインタを
当てていない)flaファイルやasファイルもプレビューでごちゃ混ぜに
実行しようとする。
余計な機能をてんこ盛りにしたせいで基本がおろそかになった気がする・・・
と思ったら、もうCS4の日本語版が出た。
Adobe大丈夫か?
>>196 リスナーとムービークリップ、深度管理が楽になった気がする
あとデフォルトでxml、正規表現とか使えるようになったし
まだflash player8向けにAS2で作れって言われるけど
できたらAS3で作らせてほしいと思うようになった
199 :
Now_loading...774KB :2008/11/15(土) 07:10:03 ID:vPlYvOtZ
すみません、FLASH修行中のものです AS3.0なんですけど カーソルに引力をつける方法ってあるんですか?? 風を表現したいんです。 カーソルを右へ動かすと速度が上がって、左へ動かすとのろくなり 停止すると徐々に右へ勝手に移動する。。。みたいなことできますかね? 重力ができるなら引力も出来るのではと・・・ あるとしたらどういったスクリプト教えてください! お願いします! ネット探したけど ありそうだけど全然ありませんでした
200 :
Now_loading...774KB :2008/11/15(土) 13:19:02 ID:/U6alnQK
CS3+AS3なんだけど var loader:Loader = new Loader(); addChild( loader ); loader.load( new URLRequest("op.swf")); // 即効で消す removeChild( loader ); loader = null; で、よみこんだswfの映像は消えるものの 読み込んだswfの音が残っちゃうんだ。 どうすればいいかわかる?
>>199 「カーソルを右へ動かすと速度が上がって」の主語はMCか?
それなら、AS3.0というよりif文の制御次第という希ガス。
仮にMCのインスタンスをfusenとし、フレーム毎のマウスのX座標をx0(初期値),x1とすると
1) もし、マウスが動かない(x0==x1) → fusen.x +=speed;
2) マウスが右に動く(x0<x1) → fusen.x += speed*Math.exp(Math.abs(x1-x0));
3) マウスが左に動く(x0>x1) → fusen.x += speed/Math.exp(Math.abs(x1-x0));
な感じかな。
ちなみに、Math.exp(Math.abs(x1-x0)) は、掛け算・割り算で1以下にならないようにするための処置。
すいません、
>>187 の色の取得法をお願いします。
203 :
Now_loading...774KB :2008/11/15(土) 14:21:40 ID:vPlYvOtZ
>>201 主語はカーソルです。カーソルに引力をつけたいんですが、 この場合、カーソルをMCに置き換えてその後はスクリプトを書けばよいのですかねぇ? ちなみに初期値とは何ぞでしょう?この場合加速度を表す数値?すみません。 あとx0,x1の設定はこんな感じ?ん? var x0=mouseX; var x1=????? すみません、もうちょっと詳しくお願いしていいですか?
204 :
Now_loading...774KB :2008/11/15(土) 14:29:45 ID:vPlYvOtZ
あ、初期値はx0から動かした距離ですかね? でもどうやってそれを定義するんでしょう?
>>204 201だが、カーソルを動かせば動かすほどカーソルが動く?
でもカーソルには引力がある??? 分からん。
図に描いてくれ。
自分の頭の仲で完結した文章じゃなく 他人に一からわかるように説明する文章を書くようにしないと 結局無駄なやり取りが増えて目的にたどりつくのが遅くなる 非効率的
マウスカーソルに対して強制的に右方向の移動補正をかけたいってことか? マウスに触ってない状態だと勝手にマウスカーソルが右に動いて マウスを左方向に動かす時はマウスカーソルを遅く、右方向に動かす時は早く動くようにする? 誰が得するのかさっぱりわからん上に 一方俺はペンタブを使った、で意味なくなりそうな仕様だな
208 :
200 :2008/11/15(土) 17:06:24 ID:/U6alnQK
>>200 だが
unloadAndPlay()っていうのが追加されるらすぃね
とりあえず追加されるまでは
MovieClip(loader.content).stop();
removeChild( loader );
で、一応音は止まった…。
でもこれぜったい消えてないよなぁ…
209 :
200 :2008/11/15(土) 17:07:22 ID:/U6alnQK
unloadAndStopだた
210 :
185 :2008/11/15(土) 17:47:56 ID:jDG1hMrg
>>186 setCuePointsって言うのがあったけど、AS3だから使えなかった。今AS2使ってるんですよね……
ほかに何か方法ってありますかね……無いはずは無いと思うんですけど。
これ使えば?とか、このサイトが参考になる。とか何でも良いので教えてください……
211 :
185 :2008/11/15(土) 17:58:41 ID:jDG1hMrg
あ、それと 1002: Illegal cue point: time must be number ってキューポイントのtime指定の所で引っかかってるんですよね? 数値データに変換したはずなのにずっと出てる……何ででしょう……?
>>208 MovieClip(loader.content).stop();
removeChild( loader );
の後に
loader.unload();
じゃ駄目なん?
213 :
212 :2008/11/16(日) 02:10:33 ID:kdT/jjec
すいません。sage間違えました。
214 :
Now_loading...774KB :2008/11/16(日) 03:46:42 ID:T4UTteUG
>>200 についてですが
>>207のいう通り
マウスカーソルに対して強制的に右方向の移動補正をかけたい
マウスに触ってない状態だと勝手にマウスカーソルが右に動いて
マウスを左方向に動かす時はマウスカーソルを遅く、右方向に動かす時は早く動くようにする
ですね。
マウスカーソルに一定の方向へ加速度を加えるようなイメージです。
AS3で可能でしょうか?
やはり>>201のようにするもんかな?
215 :
Now_loading...774KB :2008/11/16(日) 05:04:21 ID:T4UTteUG
Child同士のhitTestObjectってエラるの? カーソルを”カーソルMC”に置き換えてaddChild(カーソルMC), そんでもって衝突対象の”物体”をステージ上にaddChild(物体) この上で addEventListener(Event.ENTER_FRAME, enterFrameHandler); function enterFrameHandler(e:Event):void { var カーソルMC:MovieClip = new カーソルMC(); var 物体:MovieClip = new 物体(); if(カーソルMC.hitTestObject(物体)) { trace("当たった"); removeChild(物体); } } ってすると ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. at flash.display::DisplayObjectContainer/removeChild() at test/enterFrameHandler() ってエラる なんで!?
>>215 EnterFrame外でaddChildしてるのにEnterFrame内でvar new()しちゃったら対象が違ってきちゃうじゃない
AS2でパスワード機能?っていうんですか ネームバトラーっぽいのを実装したいのですが誰か詳しく
218 :
Now_loading...774KB :2008/11/16(日) 10:20:20 ID:T4UTteUG
>>216 EnterFrame内の var new() なくしても
同じエラーが出ます!
なんで??
>>218 Event.ENTER_FRAMEはどういうイベントか考えれ
毎秒12もnewするひつようあるんかい?
あと、ソースは「物体」とか書かずにちゃんとコピペしないとエラーなんか解らんぞ
flvplaybackを使ってシステムを作ろうとしているのですが、 動画の時間を使ってタイムイベントを行おうと思ってます。それで、 動画の再生が32.52秒目だとすると、動画の時間で34.52秒目でアクションを起こそうと 思っているのですが、何を使えば出来るでしょうか…… setIntervalを使ってみましたが、これってFLASH全体の時間であって動画の再生時間とは 異なるんですよね…… どなたか助言をくださいまし。
>>220 少しはこのスレ内とか他の質問スレとか検索しようよ
cuepoint
222 :
Now_loading...774KB :2008/11/16(日) 21:16:04 ID:ZYy1Bfkx
12時間探し続け、見つからないので質問。 画像(MC)の横幅が200pxとして、 ダメな例:) img._width = 100; 「_width」で画像全体の幅を縮めるのではなく、 画像の左端から指定したpx数だけ表示させたいです。 (画像が途中で切れてるのを表現したいです。) 教えてください。 何卒。
224 :
Now_loading...774KB :2008/11/16(日) 21:40:10 ID:ZYy1Bfkx
>>223 Windows + Flash Pro 8
>>222 横幅200のMCを別に作ってsetMaskとか
AS2使ってます。ムービークリップの深度についての質問があります。 this.createEmptyMovieClip("view_mc", 505); で、深度を505と設定しているはずなのに、 trace("view_mcの深度"+getDepth(view_mc)); をすると-16384って出ます。これって何で……?因みに数字を変更しても同じ-16384…… 良く解らないんですが、何が問題かわかる人が居ましたら教えて下さい・・・
>>226 getDepth(view_mc)
↑これ間違い
ヘルプでシンタックス確認して正しく記述すれば解決する
なるほど、書き方が違ったのか……どうもありがとうございました!
すみません、続けての質問となり申し訳ないのですが、 空のムービークリップを深度ごとに分けて作り、それを別々の用途で用いたいのです。 それで、以下のソースを書いて見ました。 for(var u=1;u<=50;u++){ this.createEmptyMovieClip("view_mc"+u, u);//基準点が左上隅となってる(初期設定) trace("view_mcの深度は? "+view_mc+u.getDepth()); } これで、traceの部分が上手くいきません。 view_mc+u.getDepth()の記述がおかしいのは解ってますが、 ほかに書き方が思いつきません。だれかこれに換わる書き方を教えてください。
>>229 なるほどどもでした〜
ついでにもう一つ質問です。
functionを自動的に500個生成したくて、eval関数を使ってみました。それで、
以下のソースを書いてみたんですけど、
for(var i=1;i<=500;i++){
function eval("Func"+i)(){
videotime[cue3]=flvPlayer.playheadTime;
}
}
これでFunc1〜Func500までが出来る予定だったんですけど、「パラメータ名が必要です」
というなぞのコメント。eval使わない時は出来たんですけど・・・どうすれば出来るでしょうか・・・
>>231 そもそも500個のループで作れる関数って必要なのか?
関数ひとつ作って引数で必要な値を渡すとかでいけるんじゃないか?
var loader:Loader = new Loader(); loader.mouseEnabled = false; Loaderクラスに対してmouseEnabledとかvisible、alphaを指定しても反映されないんですけど これはどうしたらいいですか?
>>233 何がしたいの?
ムービークリップにloaderをaddChildして、
そのムービークリップにvisibleとかalphaとかつければいいと思うよ
>>234 いえ、もう作品は出来上がってて
MCに入れたりなんかしてると膨大な量のスクリプトを書き変えなくちゃいけなくなるんです……
というかどこに書いたかも分からないんです
236 :
Now_loading...774KB :2008/11/17(月) 23:10:05 ID:jlTkO+3O
Flash-CS3-Pro(AS3.0)をWinXP-Proで使っています。 ヘルプや本を参考に、beginFill ()&endFill ()、およびRGBの255段階指定を使って MC(canvas)の色を変えたいのですが上手くいきません。ASでは、 r_val=200; g_val=250; b_val=180; rgb_val="0x"+(r_val << 16 | g_val << 8 | b_val).toString(16); // trace()で0xc8fab4が得られる canvas.beginFill (rgb_val, 1.0); canvas.endFill (); と書いていますが、以下の警告が出ます。 Warning: 1060: 移行の問題 : メソッド beginFill はサポートされないようになりました。 詳細については、Graphics クラスを参照してください。。 指示に従い、ヘルプでGraphicsクラスを見ましたが原因が分かりません。 どうすれば良いでしょうか?
237 :
Now_loading...774KB :2008/11/17(月) 23:15:47 ID:d5e3WCD3
初心者なんですが、質問です。 外部ファイルから読み込んだアニメーションgifと、 外部から読み込んだMP3を同期させるのは可能ですか? できればPlayボタンで同時にアニメーションとMP3を再生させたいのですが。
>>235 AS2.0のムービーとか読み込んでんじゃね?それなら無理
>>236 canvas.graphics.beginFillじゃね?
beginFillはMovieClipクラスのメソッドじゃなくなったはず
>>237 無理
そもそもGIFをアニメーションGIFとして読み込めない
>>237 とりあえず、AS2.0以前で同時スタートのSWFを作ったら?
それで上手くいけば3.0に移行するのも良し。
>>236 カラーをつけるだけなら↓でいいかも?
var myCT:ColorTransform = canvas.transform.colorTransform;
myCT.color = 0xC8FAB4;
canvas.transform.colorTransform = myCT;
>>238 いえ、読み込んでるのはAS3.0のファイルです。
242 :
236 :2008/11/17(月) 23:56:48 ID:PxWUsEJs
>>238 ,240
レスさんきゅうです。早速試してみました。
なお書き漏らしていましたが、今回の記述はMC(canvas)にリンケージされた
asファイル内に書いており、canvasはthisで置き換えています。
238さんの方法で
this.graphics.beginFill (rgb_val, 1.0);
this.graphics.endFill ();
としたところ、エラーは出ませんが色が変わりません。
今後beginFill()を使いこなすためにアドバイス願います。
240さんの方法では、最初
1046: 型が見つからないか、コンパイル時定数ではありません : ColorTransform
というエラーが出ていましたが、flash.geom.* をインポートしていないことに気付き、
import flash.geom.*; を追加して正しく動作しました。
Hydro Tween で TweenerのremoveTweensにあたるメソッドは何でしょうか?
244 :
Now_loading...774KB :2008/11/18(火) 01:26:14 ID:K4pvaqEf
質問です。3.0でコンテキストメニューを呼び出した時に 某かのアクションをさせて、その後メニューアイテムを選ばなかった時に つまり、メニュー欄以外をクリックしてキャンセルした時に また別のアクションをさせるといった事は可能でしょうか? 初心者の為に詳しいスクリプトをご説明頂いても判りません 可能かどうかだけ教えて下さい
>>244 ContextMenuEvent.MENU_SELECTを使えば可能
246 :
190 :2008/11/18(火) 10:25:51 ID:yCRPgwKw
>>242 this.graphics.beginFill (rgb_val, 1.0);//色と透明度の設定
this.graphics.drawRect( 0,0,, width, height )//描画
this.graphics.endFill ();//描画終了
drawRectの他にはdrawCircle, drawRoundRect等がある。
247 :
Now_loading...774KB :2008/11/18(火) 11:02:48 ID:TLTIOlky
AS3でtrace( ary );ってやると配列の中身が見れるけど オブジェクトの中身みたいときはどうすればいい?
forステートメント
249 :
Now_loading...774KB :2008/11/18(火) 12:52:33 ID:TLTIOlky
あ、そか オブジェクトも配列みたいに扱えんのか THX
250 :
Now_loading...774KB :2008/11/18(火) 12:55:53 ID:TLTIOlky
ん var obj:Object = { a:"1", b:"2", c:"3", d:"4" }; trace( obj[0] ); 結果undefinedだった
>>250 当たり前だろ
Arrayじゃないんだから
>>250 なんでObjectで配列みたいな事してんの?
それだったら配列でいいじゃん。
253 :
Now_loading...774KB :2008/11/18(火) 13:18:08 ID:TLTIOlky
あ、上のソースは適当に試してみたの 実際はobjにどんなプロパティが追加されたかわからない状況で すべてのプロパティをtraceをつかって表示させたいんだが…
>>253 ああ、そう。まあいいや。
var obj:Object = { a:"1", b:"2", c:"3", d:"4" };
for (var prop in obj) {
trace(obj[prop]);
}
for...in知らないの?
>>250 全然for使ってないじゃねーか!
ヘルプでfor..inのとこ見ろ。
こんなか var obj:Object = { a:"1", b:"2", c:"3", d:"4" }; //メンバ全てにアクセスしたいだけの時 for each(var o:* in obj)trace(o); //プロパティ名とその値を知りたい時 for(var p:* in obj) trace("プロパティ名:" + p," 値:" + obj[p]);
259 :
Now_loading...774KB :2008/11/18(火) 13:29:12 ID:TLTIOlky
みんなthx!! これで愉快なAS3ライフを送れるよ!!
>>258 やっぱプロパティ名の型指定はStringじゃなくて*のほうがいいの?
>>246 (体調が悪いので、会社を早退して書いています)
レスありがとう。
beginFill() + endFill() は、基本的に無の状態から描画するときに
使うものなんですね。
AS2使用なのです 画面上で特定の文字列を表示させてその文字列の中から特定の文字をドラッグしてそれが正解か不正解か判定させたい ドラッグした所は色が変わるように表現させたいのですがどこから手をつけていいのか分りません ヒントだけでもお力貸して下さい。
Selectionクラス
>>263 ありがとうございます
調べて悩んでみます
265 :
Now_loading...774KB :2008/11/18(火) 14:53:40 ID:YWeDIsNg
as3で、 super.ユーザー定義関数() っていう書き方があるみたいですが、このsuper.という使い方が どうしてもわかりません。 どういうときに使うのでしょう。 super(); のほうは分かります。
>>265 サブクラスでメッソドはオーバーライド(上書き)できる…
オーバーライドする前のメソッド(スーパークラスのメソッド)を呼びたくなった…
さあ、どうする…
>>260 あー、Stringの方が適してるね
よくキーコードなんかの数値をそのままプロパティ名として突っ込んでたから、その時の印象で*にしてた
結局Stringにキャストされるね
269 :
Now_loading...774KB :2008/11/19(水) 13:20:39 ID:jt0GTgQN
プロの皆様に質問です。 プレビュー画面ではアニメーションと音が合ってるのに、 ブラウザでみると、アニメーションと音がずれます。 どう回避すればいいですか?
270 :
Now_loading...774KB :2008/11/19(水) 14:04:01 ID:jt0GTgQN
269です。 自己解決しました。
アンカータグにasfunctionじゃないの?
>>272 それってブラウザで言うところのjsみたいにかけるみたいですね。!
これで何とかなりそうな気がしてきたの
274 :
Now_loading...774KB :2008/11/19(水) 20:44:07 ID:jt0GTgQN
外部から読み込んだswfにボイス音があるのですが、 この音量をつまみみたいなので調節したいのですが、どうしたらよい?
Flash8のサンプルライブラリのボタンのclassic buttonのknob faderを参考にするといい
276 :
Now_loading...774KB :2008/11/19(水) 21:53:53 ID:jt0GTgQN
277 :
Now_loading...774KB :2008/11/20(木) 03:05:06 ID:5U/pH+hC
AS3 CS3の質問です!っていうかバグっぽいんですけど textfield.htmlText = "<li>"; って一度入力すると、そのあと、どんなにhtmlTextを書き換えても すべての行に<li>の効果がかかっちゃいます>< これってどうにかならないですか?? テストしたソース↓メインタイムラインにtestってなまえのテキストフィールドを設置してHTML表示にして addEventListener( Event.ENTER_FRAME, Loop ); var c:int = 0; function Loop( e:Event ):void { if( c == 0 ){ test.htmlText = "食べ物リスト<li>リンゴ</li><li>ミカン</li><li>バナナ</li>"; } if( c == 10 ){ test.htmlText = ""; } if( c == 20 ){ test.htmlText = "<li>liの閉じタグを付けない"; } if( c == 30 ){ test.htmlText = ""; } if( c == 40 ){ test.htmlText = "食べ物リスト<li>リンゴ</li><li>ミカン</li><li>バナナ</li>"; } if( c == 50 ){ test.htmlText = ""; } if( c == 60 ){ test.htmlText = "あいうえお<br>かきくけこ<br>さしすせそ"; } c++; }
CS3 AS3なんですが、 ユーザーの操作に反応して動いて音が鳴るものを作るために、 ムービークリップの2フレーム目にサウンドを設定して、コンストラクタでstop()して、 動かしたいときにgotoAndPlay(1)で動かして、 ENTER_FRAMEを監視して最終フレームで止めるというように作りました。 これをこのまま使っているうちはよかったんですが、 表現のバリエーションを付けようと別のムービークリップの中に入れて、 外側のムービークリップのgotoAndPlay()とstop()をオーバーライドして 中と連動するようにしようとしたら、メインタイムラインでそれが存在しないフレームに gotoAndStop()したときに、サウンドが延々鳴り続けるようになってしまいました。 まるでサウンドだけがムービークリップから外れて暴走してるかのような感じなんですが、 何が足りないんでしょう?
質問したいんですが、自分の環境?の意味がよく分かりません。 Windowsってことでいいんでしょうか? それでおkなら質問します。
使ってるアプリケーションが何かって言う事と、使いたいActionScriptのバージョンが何かって事だよ
>>277 "<li>liの閉じタグを付けない";
↑を閉じてないように見えるが・・・
282 :
281 :2008/11/20(木) 11:01:14 ID:tLakeRzf
あ、そうか、+= と勘違いしてた。忘れてくれ。
つまり
>>1 -あたりをちょっと読めばわかりそうなことだな
284 :
Now_loading...774KB :2008/11/20(木) 11:46:01 ID:jEwVY6Ae
>>281 そうなのよ、<li>の閉じタグを付けないとその後、<li>を使ってない
HTMLを読み込んでも、そのHTMLに<li>の効果がついてしまうの。
285 :
Now_loading...774KB :2008/11/20(木) 11:49:02 ID:LJ5wmY4C
書籍などを見ていると、AS3の描き方で var loader:Loader = new Loader(); に続いて var urlRequest:URLRequest = new URLRequest("sun.jpg"); loader.load(urlRequest); と loader.load( new URLRequest("sun.jpg")); というのがありますが、この双方の大きな違いってあるんでしょうか?こっちのが処理が早くなるとか 前者のURLRequestのインスタンスを作って使う方が、やってる事が判り易くなるとか 後者だと記述が少なくて済む・・・程度の違いという認識でいいんでしょうか?
よくわからんが、 loader.load( new URLRequest("sun.jpg")); みたいな書き方は見にくいから個人的に大嫌い。
>>285 前者のように変数に入れれば同じURLRequestを何度でも使える。
後者のように引数で直接newしたのは使い捨て。
>>286-287 処理の効率性でどっちがいいとかっていうのはないんですね
ありがとうございました
>>280 Flash Player 8、ActionScript2.0
↑わかりました。これでいいんですよね?
聞きたいことはプログラムについてです。
質問です。 AS3でFlash時計を作る場合に、常に最前面に表示させるにはどうすれば良いでしょうか?
すみません
>>290 の追記です…
Flexでの開発です。
292 :
Now_loading...774KB :2008/11/20(木) 15:29:42 ID:jEwVY6Ae
>>290 stage.addChild( clock );
293 :
Now_loading...774KB :2008/11/20(木) 17:56:50 ID:PF6EpCOT
クラスファイルの中からstageにアクセスするにはstageオブジェクトを引数で渡す方法しかないんでしょうか?
AS3.0でxStringBeginにpublic function get selectionBeginIndex():intの値を渡したいのですが var xStringBegin:int = public function get selectionBeginIndex():int; ↑だとエラーになってしまいます、よろしくお願いします。
295 :
Now_loading...774KB :2008/11/20(木) 20:44:25 ID:PF6EpCOT
>>294 intにfunction入れてるからエラーが出るんじゃないの?
getterなんだから
代入先には関数名だけでいいんじゃないの?
var xStringBegin:int = selectionBeginIndex;
public function get selectionBeginIndex():int{
return 〜;
}
だれか
>>293 お願いします。
質問です、 図形のスケール変更の中心軸の変更するにはどうすればよいでしょうか やりたいことは 描写した図形を自由にスクロール&拡大縮小 環境はFlexでAIR お願いします。
FlexBuiderでAIRですね、すいません
>>293 FlexならApplication.application.stageでどこからでもアクセスできるんでない?
300 :
Now_loading...774KB :2008/11/20(木) 23:52:49 ID:W766d/vJ
//イベントハンドラ定義 function xPlayClick(evt:MouseEvent):void { if (sndCh == null){ sndCh = snd.play(0, 1000); } } function xPauseClick(evt:MouseEvent):void { if (sndCh != null){ sndCh.stop(); sndCh = null; ←(たぶんこのへん) } } function xStopClick(evt:MouseEvent):void { if (sndCh != null){ sndCh.stop(); sndCh = null; } } とりあえずポーズボタンをクリックしたらそこでサウンドが一時停止されて、 んで、playボタン押したら、その停止した場所からまた曲が再生するってのを作ってるんですが、できません・・。 親びん助けてください・・・。
302 :
Now_loading...774KB :2008/11/21(金) 00:13:58 ID:SvkI6m29
positionてなんすか親びん・・ フラッシュをやりはじめてまだ数日・・ まったくわかりません。しかし上の命令でつくれと・・ とりあえずポジションてやつを探してみます・・
入力された名前とその他モロモロを2つの配列に入れて サイコロ振って片方をごちょごちょしてその結果でもう一方をもごもご してるように見えるが・・・
305 :
296 :2008/11/21(金) 08:54:18 ID:I3vg+97X
306 :
Now_loading...774KB :2008/11/21(金) 09:47:16 ID:MYiGTHHr
FLASH CS3の出力窓に表示されるデータを、 任意のテキストフィールドに表示させる事はできますか? traceの内容なら出来るのですが、パブリッシュ時じゃなく動作中の挙動で出てくるエラーを表示させたいんです。
>>303 入力文字列使ってMD5で値だして、
それで適当にステータスに割り振ればいいんじゃない?
308 :
Now_loading...774KB :2008/11/21(金) 16:36:21 ID:SvkI6m29
質問です。 play_btn.addEventListener(MouseEvent.CLICK, xPrevClick); play_btn.addEventListener(MouseEvent.CLICK, xPlayClick); この二つを一つのスクリプト?にまとめることはできるんですか? できるならどうやればいいのですか?
>>308 xPrevClickとxPlayClickの処理をガッチャンコ→hoge()とする
play_btn.addEventListener(MouseEvent.CLICK, hoge);
310 :
Now_loading...774KB :2008/11/21(金) 16:45:42 ID:SvkI6m29
即答ありがとうございます! とてもわかりやすいお返事をくださったと思うのに、 初心者な者ですから、そのやり方すらわかりません。 それをヒントに色々といじってみます!
311 :
277 :2008/11/21(金) 21:04:40 ID:lgnRh3dR
>>277 だが、<li>をちゃんと閉じて使えってことで解決?
AS3.0で、別ファイルのswfを読み込んで表示させたいんですが、子になるswfのコンストラクタでstageが参照されているため、 読み込み時に「null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません」となります。 LoaderのイベントリスナでCOMPLETEを監視しても、そこまで行きません。 あらかじめLoaderをaddChildしておいても駄目でした。 このようなswfを読み込むことは出来ないんでしょうか。なお、子swfは他で作られたものなので変更できません。 ・親の読み込み部 loader = new Loader(); url = new URLRequest("sub.swf"); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler); addChild(loader); loader.load(url); ・子のコンストラクタ(抜粋) public function sub() { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; (以下略) }
AS2で質問です。 flvplaybackコンポーネントを使って、動画再生できるコンテンツを作ってみました。 それで、コマ送り機能をつけたいのですが、どうすればいいかわかりません。 →キー(キーボードの)を押したら動画が再生されて、0.3秒後に停止する。と言う機能を付けたいのですが… あと、スロー再生も出来れば付けたいです。 actionscriptに詳しい先輩方、どうか教えてください。
AS3.0で質問です textで"aaaa"+"AAAA"+"aaaa"と表示させるときに"AAAA"の所だけ色や背景色を変える事は出来ますか? 出来るならヒントだけでもお願いします。
>>314 ども、ありがとうございます。続けて質問ですが、ビデオを現在の位置で止める処理ってどう書けば良いでしょうか?
my_video.stop();ってするとどうしても最初の位置まで戻ってしまうんですよね……
どなたか助言をお願いします。
317 :
277 :2008/11/22(土) 12:27:09 ID:HNEYvq4u
>>315 TFにHTML表示じゃダメなん?
てかだれか277の相手してちょ…。
>>316 まずヘルプを見たほうが早いよ。
pauseってのがあるから。
>>317 </li>で閉じればいいんじゃない?
>>317 それでいけそうです、ありがとうございました。
こんにちは。 for( var i : i = 0 : i > 5 ){ obj1 = addChild( mc , "name" + toString(i)) } で、obj1の数字の部分をiで連番にしたいのですが、 どうすればよいのでしょうか? いろいろ試したのでしょが強制肩変換に失敗しましたとか エラーになります。 よろしくお願いします。
すみません、AS3で パブリッシュの時にはエラーが出ず、動作中にエラーを起こす方法・一文なぞあるでしょうか? try文のテストをしたいのですが・・・。
>>322 ムービークリップおいといて、timerとかで再生中にそれを削除
削除してからムービークリップのプロパティにアクセスするとか
>>323 ありがとうございます。
ちょっとやってみたのですが方法が間違ってるのか、ムービークリップを消しても何も起こらず、flashの動作が止まったりもしませんでした。
また調べてみようと思います。
見返りを求めるって意味なら実際答えきゃいいと思うけど
>>321 toString(i)じゃなくてi.toString()じゃないんかなぁ。
誰かAS2.0でMD5について詳しく・・・ 出し入れとか
>>327 md5とかshaとかの変換ライブラリはAdobeにあったと思うぞ
アルゴリズムの内容を詳しく解説とかは無理w
>>277 どうにかなる。
そもそも<li>〜</li>にするのがHTMLのルールだから、本来は皆が言ってるように
閉じタグの</li>がなければ、付け足すのが常套手段。
とは言え、htmlTextで書き換えても<li>の効果が継続してしまうのは確かにバグと思われる。
とすればバグはバグとして、どうすれば<li>の効果を消すことが出来るか、を考えればいい。
ヒント:bullet
331 :
Now_loading...774KB :2008/11/23(日) 10:24:59 ID:koXMxxCm
>>327 文字列からMD5は分かったんだけど、ハッシュされた文字列を元通りに
する方法が書いてないんだよそれ
こればかりは検索かけても出てこないという
何?MD5を複合化できねーかって? 連休だからって冗談きついぜ
のぶひごぉぅ
>>332 そりゃアンタ無理。ハッシュは非可逆な計算であって暗号化とは違うよ。
ホントに「出し入れ」がしたかったらそれは可逆処理ってことだから暗号を使うべし。
以下補足。
ハッシュってのは元の文字列をこねくり回して計算したタダの数値であって、
異なる2つの文字列のハッシュ値が同じになることもある。
ただその可能性が1/10000000000000000000とかそんなだから、
ハッシュ値から元の文字列を探ったり同じハッシュ値になる別の文字列を
探ったりするのは事実上無理。それでパスワードの照合とかに使えるんだよ。
サーバ側にはパスワードのハッシュ値だけが保存してあって、
ログイン時には入力で送られてきたパスワードのハッシュ値を計算して、
サーバ上の値と一致したら「たぶん正しいぜ、ログインOK」っていってるだけ。
ニセモノの確率は1/10000000000000000000とかだからな。
336 :
277 :2008/11/23(日) 13:13:17 ID:P4cq01A9
>>335 説明が下手だった
例えば
>>329 で「バルス」って入力すると"a1787f27b7af6129f8447b62d142631f"って
出てくるんですよ。そこは大丈夫なのよ。
やりたいのはその逆で"a1787f27b7af6129f8447b62d142631f"って入力すると「バルス」って
出てくるようにしたいのです。
これすら無理なら潔く腹斬る
多分だけど
>>337 に必要なのは Base64 なのかね
でも Base64 クラスは Flex にはあるけど Flash にはないんだっけ
>>337 ハッシュは暗号化じゃないって書いてあるのが読めない子なのか
ハッシュから元データへの復号化は不可能だって意味なんだが
ハッシュの文字列だけで数GBの動画が復号化されたらえらいことになるだろ
なんて和やかな日曜の午後の光景だろう
>>337 MD5値が"a1787f..."になる文字列は「バルス」以外にも星の数ほどある。
だから無理。潔く腹を斬れ。
何がしたいんだ?
「バルス」を他人に知られないように暗号化したいのか?
パッと見なんだか分からないように難読化したいだけなのか?
URLクエリなど直接日本語が使えないとこのために英数字だけとかに変換したいのか?
惜しい人を亡くした・・・
>326 >toString(i)じゃなくてi.toString()じゃないんかなぁ。 すまそ、ソレ書き間違いでi.toString()です。 で、オブジェクトの方をforで連番つけて量産したいんですが。。。
むしろ配列
AS2を使ってます。 flvplaybackを使ってるのですが、ムービーを巻き戻す機能を付けたいのですが、 方法が見当たりません。どなたかご存知でしたらご教授ください。 ボタンを押したら、movie.playheadTimeの3秒前に戻って停止、という動作をしたいのですが…
>>347 seek、resume
つーかどうしてヘルプでflvplaybackを検索しないの?
復活の呪文見てみたけどMD5じゃないみたいね。
351 :
342 :2008/11/24(月) 02:07:46 ID:2glolN00
>>349 なんだ、介錯してやろうと思ったのにwww
復活の呪文(笑)、何かをBase64エンコしたっぽい感じだな。349はセーブがやりたいの?
>パス入力して変数出して能力値とかに割り当てるような
これ読むとセーブじゃなくて、バーコードバトラーみたいな感じで名前入れると
勝手に体力とか防御力とかが決定されるようなものを想像してしまうんだが。
復活の呪文なんて好きに作ればいいと思う。質問するような事じゃない
354 :
Now_loading...774KB :2008/11/24(月) 12:32:54 ID:NgJB5MI9
僕はホウケイなのですが、どうすればいいでしょうか。
>>348 seekはもちろん使ってみました。しかし、あれではなぜか正確に3秒前に戻せないのです……
video.seek(flvPlayer.playheadTime - 3);
としてもいまいちおかしな操作になります。
(現在の再生時間-3秒)と言う時間に戻すにはどうすればいいのですか?
>>351 そーそー、そんな感じの。セーブじゃなくてバトラーの方
激突要塞みたいに自分でキャラ作って他の人が作ったキャラと対戦・・・みたいな事を夢みてるのです
>>352 yes
MD5とかじゃなく、最初からどういうことやりたいか具体的に書いてたほうが はやかったんじゃ… それに技術交換スレでのレスまでで問題解決してるように思えるが どこで詰まってるの?
例えばLv99HP1000のキャラのパスワードが"991000"じゃバレバレだから テキトーに"uhoiiotoko"みたいな形に暗号化?したかった。 これだけならMD5で解決なんだけど、"uhoiiotoko"を"991000"にする方法が全く 解らないので、そこで詰まってます
>>352 のスレで回答もらってるじゃん。何が不満なの?
>>358 数字を規則的にアルファベットに置き換えればいいじゃん。
1→a
2→b
とか。
361 :
Now_loading...774KB :2008/11/24(月) 14:25:43 ID:o7/0v9h7
質問お願いします。 "sprite1" "sprite20" "sprite400" みたいな文字列から、"sprite"の部分以下の数字部分の文字列(上の1、20、400)だけを取得するにはどうすればいいのでしょうか。 使用しているのはFLASH CS3 Actionscript3です。
>>358 この場合の暗号化っていうのは、文字の置き換えや変換の仕組みを自分で好きに考えることです。
例として向こうのスレで515が書いてる。
それともあれじゃ不満だけど自分じゃ思いつけないから、もっと別の置き換えのアイデア募集!なのか?
>>360 おしフラ読んで頑張ってきますわ
>>362 いや不満じゃないさ
ただアレだとチートし放題だから何か対策をと思って
じゃあ、どのようにすればチートされにくいゲームを作れるかを聞いてたってわけか?as以外でやれ
その程度の知識でよくゲーム作れたな
自分でも不思議だよ
>>360 で
str = "1122"
searchStr = "1"
replaceStr = "shinekasu"
strArray = str.split(searchStr);
resultStr = (strArray.join(replaceStr)).toString();
trace(resultStr);
これで文字1つなら置換えできるけど、これで英数字全部書くってのは酷なので
一気に書いちゃう方法ってありますか?
>>366 trace結果がshinekasushinekasu22になったけど?
何をしたいのかわからない。
チートされたくないだけならチェックディジット的なものをつければ?
パスワードが"991000"になったら、
9+9+1+0+0+0=19を最後につけて"99100019"にするとか。
この計算方法さえばれなければチートできない。
どなたか
>>355 の質問に答えてくだされば嬉しいっす……
>>367 無い頭で暗号化(笑)をしてみた。
pass = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
code = ["a", "v", "t", "i", "b", "n", "t", "e", "h", "z"];
searchStr = new Array();
replaceStr = new Array();
str = "zzvaaa";
for (i=0; i<10; i++) {
searchStr[i] = code[i];
replaceStr[i] = pass[i];
strArray = str.split(searchStr[i]);
resultStr = (strArray.join(replaceStr[i])).toString();
}
trace(resultStr);
これで"991000"にならないのは何故なんだぜ?
後者の方ちょっと詳しく
>>369 なんでstrをsplitするのかよくわからない
var pass = new Array();
pass["a"] = 0;
pass["v"] = 1;
pass["t"] = 2;
pass["i"] = 3;
pass["b"] = 4;
pass["n"] = 5;
pass["t"] = 6;
pass["e"] = 7;
pass["h"] = 8;
pass["z"] = 9;
str = "zzvaaa";
resultStr = "";
for (i=0; i<str.length; i++) {
resultStr += pass[str.substr(i, 1)];
}
trace(resultStr);
後者の方のどこがわからないのか詳しく
>>369 せっかくチェックディジットってキーワード教えてくれてるのに
ググることもできねーのかよ
>>368 大前提として、希望しているシーク先はシークポイントなのかどうか把握してる?
ニコニコとかでシークバー操作したことあるならわかると思うが、
動画ファイルごとに「シークで移動可能な場所」が決まってる。それがシークポイント
逆に言えば、シークポイント以外に移動しようとすると、移動先の最寄のシークポイントに移動してしまう
対処方法は少なくとも俺は知らん
はい。把握してます。しかし、seekでは大雑把になりすぎて、扱いにくいのです。 それで、seekに変わるものを探しているのですが……中々見つかりません。 時間指定で動くようにしたいのですよね……12:312と指定したら動画の再生ヘッドが12:312に行く。 と言う風な動作を目指してます。
で、マルチしてまで何がききたいの?
上に書いてある通りの動作が出来るようになるためのメソッド、プロパティ、何でも良いです。 これを使ってみれば?とかあればお願いします。
ないですね
無いですか……技術上不可能と言うことでしょうか?やり方はあると思ったのですが…… こちらの人でも思い当たらない程高度なことだったのですね…… もし、ほかに何かご存知の方がいらっしゃったら何でも良いので教えてくださるとありがたいです。
>>371 ググってもAS関連の事は何も出てこなかったぜ?
手出ないし
>>370 で10年戦えそうだから保留。ありがとうございました
379 :
Now_loading...774KB :2008/11/24(月) 18:13:28 ID:NgJB5MI9
手を使わないで射精するにはどうすればいいですか?
国語できない子はスクリプト書けないの法則
XPSP2 CS3環境下でas2.0製作。 タイムラインに配置したMCが時々時間が経つと勝手に消えます。 消える条件としてはどうも 配置したMCは1フレームで停止させているもの。 (2フレーム使ってループさせると消えない。this.stop()で止めても消える。) 同じ環境下でも消えない物もある。 最終フレームで止めているだけでもある程度時間が経つと消える場合もある。 という物なんですが、これって回避方法ってあるのでしょうか? それとも全て2フレームでループさせないといけないのでしょうか??
382 :
Now_loading...774KB :2008/11/24(月) 19:43:37 ID:82/sItX3
もうしわけない。sageてました・・・。
>>381 その消えるっていうのは、実際にステージからMCが削除されてるのか、それともalphaで見えなくなっているだけなの?
情報を小出しにされると答えづらいからスクリプトを書きだすとか構造を説明するとかちゃんと分かるように説明して頂戴
>>383 申し訳ないです。
MC自体が非表示になっているようです。
少し時間が経つとまた表示されたりするケースもあって
もう少し調べてみたらどうもタイムラインの最終フレームで
停止している状態のMCがその状態になる場合がある事はわかりました。
毎回起こるわけでもないし、同じ状態の物が全てそうなるわけでもないので
困っています。
385 :
Now_loading...774KB :2008/11/24(月) 20:12:50 ID:82/sItX3
>>383 補足です。
スクリプトとか、構造とかは全く関係ないようで
タイムラインの一番最後で停止(もしくは停止状態に)している物で
一部のMCだけ一定時間後に消える場合がある、という物です。
デバッガ使ってもvisivleはtrueのままだけど、実際に表示は消えます。
深度(レイヤーかな)はどう? 静的に配置してるんだよね
>>381 > スクリプトとか、構造とかは全く関係ないよう
本当に?すくなくとも自分は聞いたことも遭遇したこともない。
最小構成のFlashを作っても再現する?
座標、深度、アルファ値、その他trace()して存在は確認できてるってこと?
何かが邪魔してたりしない?
そのFlaファイルをupしてくれるのが確実だと思う。
>>386 はい、静的です。
レイヤも全て別レイヤに配置していますがやはり発生します。
>>387 現在まででスクリプトは非常に簡素にしています。
よくある、メニューをクリックするとそのページが出る。程度のスクリプトです。
そのページのまま放置すると配置してある特定のMCだけある程度の時間で消えたり
消えては出現して・・を繰り返したりします。
そのおかしな動きをするMCが全て合致する条件として前述の
タイムラインの最終フレームでstop();をかけたもの、若しくは1フレームで
静止させてあるもの。なのです。
回避方法はgotoAndPlay(1)などでループさせると回避できます。
同じファイル内でも同じ条件でも起こるMCと起こらないMCがあります。
ただ、ループしか回避方法がないのか・・?と思ったので質問させていただきました。
>>388 回避方法云々以前に、そんな現象が起こるということは普通ないので
おそらく作り方に原因があると思われる。
バグという可能性も一応あるけどね。
スクリプトを簡素にしていると本人はいっていても、どこかに本人の知らない矛盾や
コンフリクトがあるかもしれない、仕様を誤解しているかもしれない。
MCをひとつ配置しただけ、AS一切なしのflashを作っても同じ現象が起きるのでなければ
今作っているflash固有の問題であり、その作りに問題があると考えるのが妥当。
だから、作っているflaと同じものをこちらでも作れるような情報を出すか
flaそのものをアップしたほうがいい。
>>389 A_MC
話tn1-btn2-btn3-btn4
B_MC
------MIDASHI_MC
C_MC
------MIDASHI_MC
D_MC
-----MIDASHI_MC
こんな配置でA_MCのボタンをクリックする事で各MC特定タイムラインに停止。
(タイムラインにthis.stop();のみ。)
それぞれそこでムービーを再生する、という仕組みで
BからD_MCの表示は読み込まれたら_alphaを増やして表示。
こんな感じでC_MCの配下にあるMIDASI_MCのみ一定時間後に消える、という物です。
>>389 アップできれば一番早いのですが仕事で受けているモノですので
どうしてもアップはできません。
アップもせずに教えてくれ、というのが都合のいい話だという事は分かっているし
解決にも手っ取り早いと思っているのですが・・・・
回避はできるので仕事に支障はないのですが、どうしても気になっているので
教えてくれる、若しくは知っている人が居れば・・・と思って質問してみました。
確かにおっしゃる通り、作り方の問題かもしれない、とは思うのですが・・・
392 :
Now_loading...774KB :2008/11/24(月) 22:34:48 ID:82/sItX3
も・・・申し訳ないです・・。 非公式のテクニカルノートに _alphaの値は12800が上限でそれを超えると・・的な記述がありました・・ これかもしれないです・・・・orz 確かに_alphaの上限切ってないMCだったです・・・。 なんでループにすると問題が解決するのかは分かりませんが どうもalphaの値が増えすぎていろいろとおかしな事が起こるような感じでした・・・ if(this._alpha>100){ this._alpha=100; } 入れたら直りました・・・・こっぱずかしい・・・・。 自己解決したっぽいです。
>>390 つまり、外部swfもしくは画像の読み込みとロードを行っているってことかな?
さらに_alphaもいじっているわけで、それだけ要素が増えれば簡素とはいえないと思う。
読み込みされたものがunloadされてるとか、再読み込みが発生しているとか、
キーフレーム挟んだせいでクリアされてるとか、
_alpha調整が意図しないタイミングで発動してるとか、
原因になりそうなことはいろいろ考えられる。
その説明見た限りでは、やはり作り方に原因があると思うけどなあ。
アップできないのは仕方ないけど、まったく同じ物をこちらで作るか見るかできる状況でないと
原因の特定は難しいね。
面倒だろうけど内容だけを適当なものに置き換えて同一構成のfla作るとか
そうでないなら、どこにどんなASを書いているかまで示してくれないとちと難しい。
>>392 入れ違いすまん。
解決してよかったね。
もし_alphaをonEnterFrameで実行しているなら、100になった時点で
onEnterFrameをdeleteするのがパフォーマンス的にはよりいいと思う。
>>377 不可能ではないが実用的ではない、から実装されてないんだと思われ。WMPとか一般のプレイヤーでも。
たとえば、非表示にして最寄のシークポイントからフレームレート上げて目的の時間でpauseする、とかは出来るかもしれない
ここで問題になるのが、動画のデコードの仕様上、シークポイントから順番にフレームをデコードしないと絵が出ないということ
たとえば、たまにあるシークできない嫌がらせ動画で8分のところに移動しようとすると、8分ぶんデコードしなくちゃならない
使ってるマシンのスペックが再生できるぎりぎりのスペックなら、シークに8分かかると言うこと
再生時のCPU負荷が10%でも、単純計算で48秒かかるわけだ
多くの動画はキーフレーム10秒くらいになってるから、実装してもポーズのたびに数秒固まる、って感じになると思う
その辺を踏まえて、デコードしなきゃいけないフレーム数が一定数以下なら上記のような処理をする、
それ以上のときはあきらめてシークポイントに移動、とかやれば多少はましになるかもしれないが、
正直コストと結果がつりあわないと思う
まあどうしてもって言うなら、同じ動画を3秒ずらして再生(片方は非表示、ミュート)して、 ポーズの時に表示を入れ替え、再開時は元のメインを6秒遅れでポーズ解除して逆に3秒遅らせるとか? ・・・ASとまったく関係ない話になってしまった。スレチ&長文スマソ
actionscript2.0, flash player 8.0で開発しています。 テキストフィールドでHTML表示させたいんですが、うまくいきません。 htmlプロパティをtrueにして、htmlTextにHTMLを突っ込んでいるんですが、 表示がイマイチです。 <br>タグが効きません。(ただし文字列としては表示されていないので反応はしてるっぽい) <img>タグが効きません。全く無視されている。 <b>タグ、 <i>は効いている。 <br>に関しては\nで改行させると表示される。 actionscript3.0以上じゃないとだめとかありますか?
399 :
Now_loading...774KB :2008/11/25(火) 16:44:55 ID:BlSmjByr
何が使えるかはリファレンスを見れば書いてあるよ いちいち答えてられんよ
Flashに対応しているタグしか使えないよ。imgタグは使えたはずだけど
401 :
398 :2008/11/25(火) 17:00:05 ID:uKD4AStB
multilineをtrueにしたら改行されました。僕馬鹿みたいです。 取り急ぎ。
402 :
398 :2008/11/25(火) 17:01:37 ID:uKD4AStB
画像もでたわ。死にたい。
403 :
Now_loading...774KB :2008/11/25(火) 18:40:28 ID:CQgN+vON
オートインデント可能なテキストエディタを制作中です。 行頭のタブ数だけ、次の行にタブを追加しようとしているのですが、 デフォルト動作である\nの入力が、キーボード押下イベントが 終了してから行われるので、\n\t\tのような追加ができません。 またこのイベントはcancelable=falseで、preventDefault()が できませんでした。 どうすればこの機能を実装できますか?
404 :
403 :2008/11/25(火) 18:47:52 ID:CQgN+vON
環境はactionscript3.0 コードは、 var tf:TextField=new TextField(); tf.addEventListener(KeyboardEvent.KEY_DOWN,keyCheck); private function keyCheck(evt:KeyboardEvent):void{ switch(evt.keyCode){ default:break; case Keybord.ENTER: evt.stopImmediatePropagation(); var tabs:String=getTabs(evt);//追加するタブを取得 tf.appendText(tabs); } } という感じです(流れです)
405 :
398 :2008/11/25(火) 18:51:18 ID:uKD4AStB
406 :
Now_loading...774KB :2008/11/25(火) 22:55:33 ID:rXBWahqM
"sqrt(3)*sin(pi/n)"などの入力から計算したいと考え、数式解析のライブラリを探しています。 「actionscript 数式解析」「actionscript 数式 パース」などで検索しても見つけられません。 いくつか教えて下さい。
どでかい1枚の画像が背景にあって、 グリグリとマウスで掴んで表示させていくというところまでは できたのですが、 最初から高解像度の画像を読むのではなく、 低解像度の画像だったのが、徐々に、高解像度の画像を順番に読ませていく という仕掛けはどうやればいいのでしょうか?? つまり、ユーザーの画面内に見えているところだけ、優先して、 高解像度にしていきたいのです。 モザイクっぽい画像が、次第に高解像度になるという感じの処理です。 as3です。お助けください
>>409 ありがとうございます。そのしくみならシンプルに出来そうですね。
がんばってみます
411 :
408 :2008/11/26(水) 00:10:22 ID:Wtx4V0JJ
413 :
Now_loading...774KB :2008/11/26(水) 01:20:09 ID:+3ut1nwH
質問です。 外部から読み込んだHTMLファイルをテキストエリア?に表示させることができたんですけど、 でもいざホームページを見てみると、しっかり外部から読み込んで表示はしているけど、 マウスのカーソルをそのテキストエリアに合わせると、 その表示されている文章を消したり書けたりしちゃうんですけど、 対処する方法ありますか? うまく説明できず申し訳ありませんが、どなたかお願いします。
下記のようにライブラリから1つのシンボルを複数生成したい場合、AS3ではどのように記述すればよいのでしょうか。 for(i=0; i<10; i++) mc.attachMovie("a", "a"+i, cnt++);
>>413 テキストエリア(テキストボックス)を作るとき「テキスト入力」になっていたのでプロパティから「ダイナミックテキスト」に変更する。
416 :
Now_loading...774KB :2008/11/26(水) 09:49:33 ID:+3ut1nwH
>>415 ありがとうございます。
試してみます。
417 :
403 :2008/11/26(水) 10:35:52 ID:bdrHr+79
preventDefault()のできないデフォルトのイベントを
行わせないことはできますでしょうか?
具体的には、
>>403 にあるキーボード入力イベントです。
Enterキーを押したときに改行されないようにしたいんです。
>>414 AS3からはAssetの埋め込み(Embed)というのを使ようだよ。
[Embed(source="foo.swf", symbol="sym1")]
private var clazz:Class;
// sym1がMovieClipなら、clazzはsym1の内容を含むMovieClip(のサブクラス)
// をあらわすクラスオブジェクトになっている。
for (var i:int = 0; i < 10; i++) {
var mca:MovieClipAsset = MovieClipAsset(new clazz());
mc.addChild(mca);
}
詳しくは AS3リファレンスの移行ガイド参照。
ttp://livedocs.adobe.com/flex/3_jp/langref/migration.html
【やりたいこと】 複数asファイル外部に置いてimportしてるけど、中に含めちゃいたい 【やったこと】 ドキュメントクラスに設定してたA.asを、そこから外してinclude "A.as"; A.asには他の外部クラスがimportされてるから、それはA.asの中でinclude "B.as"; う まく行きません。 初心者でつまらない間違いかもしれませんが、アドバイスいただけると嬉しいです。
>>417 textInputイベントならpreventDefault()が利くハズ。
textInputイベントはキー入力だけじゃなくてコピペ入力でも発生するから
改行を含む文字列をコピペされた場合も考慮する必要があるね。
質問させて下さい。 CS3 AS2.0を使用しています。 ルートのステージに変数名「H_Text」というダイナミックテキストフィールドを配置しています。 外部からxmlファイルを読み込んでH_Text内に文章をパースしています。 このH_Text内に読み込んだxmlの文章から特定のキーワードを抽出して それにリンクを貼り、何かしら装飾(下線等)した状態でFlashで表示したいんです。 まず抽出する所からつまずいています。 ルートの第一フレームにxmlファイルのテキストを読み込んでFlashで表示させるASを書いていて、 そこまでは成功しているのですが、そこから先どのように書けば特定のキーワードを抽出出来るでしょうか。 欲を言えばそれにリンクを貼りたいんですが・・・。 どのような方法があるでしょうか。 どうかよろしくお願いします。
422 :
421 :2008/11/26(水) 21:56:00 ID:Mf7Y73yw
リンクを貼る代わりに、試しにまず特定のキーワードを置き換えてみようと 書いてみたコードが以下です。 function strReplace(H_Text,ひろゆき,タラコ){ var tmp:Array; tmp = H_Text.split(ひろゆき); H_Text = tmp.join(タラコ); return H_Text; } 「ひろゆき」という特定のキーワードを「タラコ」に置き換えようとしたのですが、 何も変化がありませんでした。 どうかよろしくお願いします。
>>418 ありがとうございます。試してみます。
AS3に移行は難しいですね。
>>421 流れは422で合ってるよ。一応検証したスクリプト書いとく。
function strReplace(H_Text:String,str1:String,str2:String):String {
var tmp:Array= new Array();
tmp = H_Text.split(str1);
H_Text = tmp.join(str2);
return H_Text;
}
trace(strReplace("試しににひろゆきをタラコにかえます","ひろゆき","タラコ"));
424 :
418 :2008/11/27(木) 00:25:29 ID:gqRSdutv
425 :
423 :2008/11/27(木) 02:22:33 ID:4hI9XfFY
>>424 一応これ↓でもいきました。(Dictionaryつくらなくてもおk)
var dict:Dictionary = new Dictionary();
for(var i:uint=0; i<10; i++){
var targetName:String = "a"+i;
dict[targetName] = new a();
mc.addChild(dict[targetName]);
}
この場合、インスタンスにアクセスするにはmc.dict[charName]ではなくdict[charName]になるのか。
難しいぞAS3。AS2から変わりすぎ。
action scriptで作ったアニメーションを、 aviもしくはmovで書き出すことってできますか? 普通のタイムラインアニメーションならできるんですが、、、
for ( i=0 ; i>4 ; i++ ){ eval[obj]+i.x = 100 ; } と、たしかこんな感じでインスタンスを操作できたと記憶しているのですが、 Actionscript 3.0でこれと同じ事をするには、どうすればいいのでしょうか? eval関数自体がないようです。。。
>>427 まずはまともなソース書けw
evalは非推奨
配列使え
429 :
190 :2008/11/27(木) 12:56:22 ID:4QXLUSlb
>>427 var ["objname"+i].x = 100;
430 :
Now_loading...774KB :2008/11/27(木) 13:40:00 ID:88Bwui3/
ひどい有様だなこりゃ
うはw
我ながらこれはひどいw
>>430 ひどいとわかるなら訂正してくれ
>>429 this["objname"+i].x = 100;
メンバじゃないなら、表示オブジェクト( AddChildしてるもの )限定でGetChildByName
質問です。開発はAS2でしています。 on(release){ this._xscale *= 1.1; this._yscale *= 1.1; } で、ボタンを押すと拡大される機能を付けたいのですが、拡大の基準点をボタンの中心に置くのにはどうすればいいでしょう? 現状だと左上隅を基準点に拡大されるので、ボタンを押すたびにボタンが勝手に遠のいていきます。 ボタンを何度も押してもボタンの真ん中に基準点が来るようにしたいのです。どなたから知恵を貸してください。お願いします!
>>432 もっと艦橋を書きなはれ。
AdobeのFlashならダブルクリックして整列で調整できる。
つーか、最初の段階で真ん中に設定すればOK。
すみません、質問を変えさせていただきます。実行中のflashで、ムービークリップをクリックしたら そこが基準点になる、と言う風にしたいです。どなたか心優しい方、アドバイスをお願いします。 開発環境はAS2,CS3です。
435 :
403 :2008/11/27(木) 16:21:02 ID:vYlB/r2Z
>>435 基準点を変えることはできない。
もとから基準点を中心にしたボタンにするか、拡大した大きさの中心が
ボタンのx座標とy座標になるように拡大するたびに移動させる。
>>434 1つの案だが(ボタンではなくMCで)
・空のMC(例:MC0)を用意
・MC0内のマウスのローカル座標を把握する記述を書く
・MC0内に画像MC1を置く
・MC0をクリックするとそこにMC1が移動&拡大するようにする
どうかな?
438 :
Now_loading...774KB :2008/11/27(木) 16:30:26 ID:Ze2/wus4
[環境] OS:WinXP-Pro,Mem=3GB,ソフト:FlashCS3-Pro(Player9.0,AS3.0) 異なる名前のMCを一気に別のMC内(親コンテナ内)に出現させたく思います。 テストとして同じ名前のMC(YellowMark,クラスはYellowMark())を親(xyAxisM)の中に 出現させるため以下の記述: for (var id = 0; id <7; id++) { var mc:MovieClip = new YellowMark(); mc.name = "yellowM"+id; mc.x = 30*(id+1); mc.y = 0; RootTL0.xyAxisM.addChildAt (mc, id); //xyAxisMはステージ(RootTL0)内にある } を実行したところ、これは上手くいきました。 そこで名前ごとに1個づつ出現させようと思い、試しに1つを出そうと for (var id = 0; id <1; id++) { var atomName:String="C"; var mc:MovieClip = new ["atom"+atomName](); //子オブジェクト名 atomC を出現させたい // ・・・ mc.name = "yellowM"+id; 以降は同じ を実行したところ下記のエラーが出ました(コンパイル自体はOKでした)。 TypeError: Error #1007: コンストラクタ以外にインスタンス化が試行されました。 この後、色々記述を試しましたがやはりエラーが出ます。どうしたら良いでしょうか? アドバイスを願います。
441 :
Now_loading...774KB :2008/11/27(木) 19:48:27 ID:GBO8wcTQ
acs2.0です。 動的に取得した複数のURLからmovieclipに順番に画像を 表示するのを作りました。とりあえずは動いているんです。 画像の切り替わりをsetinterval()で制御しているんですが、 切り替わり時に画像が全く表示されない瞬間が存在します。 MovieClipLoaderで画像を差し替えていますが、 loadClipした際にどのタイミングで前の画像が消えるんでしょうか。 onLoadStart?onLoadComplete? onLoadCompleteのタイミングだとしたらこの隙間を解消することは 難しいのでしょうか。 やるとしたらダブルバッファリングのようなMovieClipを2つ用意して visibleで切り替えるような感じでしょうか。常套手段があれば教えてくだしあ。
>>441 MovieClipに直接loadするんじゃなくて、MovieClip内に空のムービークリップ生成してそこにloadする
で、completeになったら一個前のムービークリップを削除する
MovieClipに直接loadすると、MovieClip内のものは消去される
>>438 やりたいことがいまひとつわからんのだが、ソースコードにYellowMarkみたいな名前
をハードコーディングせずに、ライブラリにあるFoo1, Foo2 といった名前を実行時に
組み立てたいってこと?
for (var i:int = 1; i <= 5; i++) {
var name:String = "Foo" + i;
var mc = new ?????(); // ここで順番に Foo1, Foo2, ...を作るってこと?
...
}
クラス名の文字列からクラスオブジェクトを得るにはflash.utilsパッケージの
getDefinitionByName()を使えばいい。
import flash.utils.*;
for (var i:int = 1; i <= 5; i++) {
var name:String = "Foo" + i;
var clazz:Class = getDefinitionByName(name) as Class;
var mc:MovieClip = new clazz() as MovieClip;
...
}
こんな感じでできないかな。
444 :
438 :2008/11/27(木) 22:46:00 ID:CmRCDm76
>>443 レス有難うございます。
すいません、説明不足でした。やりたいことを一言で表すと、
「A2.0以前のattachMovie()のように、MC内に子MCを名前で配置したい」
となります。
なので、443さんの前半の解釈で正しいです。
flash.utilsパッケージのgetDefinitionByName()を試してみます。
AS3で、画面中にあるCLICK、ROLL_OVER、ROLL_OUTのMouseEventを指定しているスプライトの機能を 一時的に全て止める方法はありますか?全部mouseEnabled = falseにするのも戻すのが大変だし・・・ で、画面を覆うサイズのスプライトを最前面に置いてみたら、その下にあるスプライトのMouseEventが一応動かなったようですが この方法は何か想定される問題はあるのでしょうか?ちょっとした方法で下にあるボタン機能が利いてしまうとか 他にもこの場合のもっと効率の良い方法があれば教えていただきたいです
>>445 AS3で新しくなったイベント処理の仕組みでできると思う。
「ActionScript3.0プログラミング」の「イベントフロー」のところを見てみましょう。
ttp://livedocs.adobe.com/flex/3_jp/html/16_Event_handling_1.html 上位のコンポーネントのところでイベントをキャプチャーフェーズで奪ってとめてしまえば
下位のスプライトのところまでイベントが届かない。
MouseEventを効かせたくないボタンやスプライトたちの共通の祖先のコンポーネント(最上
位のStageで構わないと思う)にイベントリスナーをuseCapture=trueでaddEventListener()する。
イベントリスナー内の処理では、MouseEventを奪いたい時にはevent.eventPhaseを見て
キャプチャーフェーズならevent.stopPropagation()すればいいはず。
removeEventListener()するときもuseCapture=trueを忘れずに。
んなもんは、stage.mouseEnabeld=falseでいいじゃん
448 :
446 :2008/11/27(木) 23:45:01 ID:gqRSdutv
>>447 それだとstageのイベントハンドラは呼ばれなくなるけど、
子孫たちのイベントハンドラはあいかわらず呼ばれるんじゃなかったっけ?
…とおもってリファレンス見ると、子孫までもすべて無効にするにはmouseChildrenを
使えとな。ガーン。
446みたいなご大層なことは必要ないらしい。(´・ω・`) スマソ
>>446-448 解説ありがとうございました
正直446のリンク先はチンプンカンプンの状態ですが、これから読んでみます
一応テストしてみた所stage.mouseChildrenのtrue or falseで全体制御はできているようでした
450 :
438 :2008/11/28(金) 01:42:41 ID:y3TL7Atd
>>443 有難うございます!
名前でaddChildAt()出来ました!
>>440 まさにその通りでした!
お返事遅くなってすいません、どうもありがとうございました!
453 :
New_loading...774KKB :2008/11/28(金) 12:08:04 ID:MlypFaJZ
本当に初歩的な質問で申し訳ないのですが,非常に困っているので教えてください. ASファイル(Main.asのようなファイル)では,線を引く関数(_root.moveTo(),_root.lineTo())は使えないのでしょうか? ちなみに,Flash8,AS2.0です.
455 :
Now_loading...774KB :2008/11/28(金) 13:27:28 ID:jpW3R4Jp
お尋ねします。 マウスホイールでスクロールするflashを作っているのですが、 ページを開いてから1回flash上でクリックしないとonMouseWheelがとれません。 クリックしなくてもホイールスクロールできるようにするにはどうしたらよいでしょうか? AS2です。
>>455 >1回flash上でクリックしないとonMouseWheelがとれません
仕様。
だから大抵は「クリックして下さい」とか「〜を入力してください」のように
閲覧者がフォーカスをswfにあわせるように仕向けている。
それが無理ならJSで、ページ開いたら勝手にフォーカスをswfにあわせるようにするとか。
458 :
New_loading...774KKB :2008/11/28(金) 13:49:15 ID:MlypFaJZ
すばやい回答ありがとうございます. importしてると思うんですけど... とりあえず,「import flash.events.Event」とは書いてあります. 間違っていますかね?
459 :
Now_loading...774KB :2008/11/28(金) 13:51:15 ID:jpW3R4Jp
455
>>456 - 457
すばやいご回答、ありがとうございます。たすかりました。
>>458 そりゃAS3.0の書き方だろうに
2.0ならMovieclipを継承するクラスならmoveToもlineToも使えんじゃね?
AS2.0で作成したシューティングゲームを3.0に移行したいのですが、 ソースの"gun".removeChild("gun"+1);の部分で 「未定義である可能性のあるメソッドremoveChildを静的型Stringの参照を使用して呼び出しました。」 とエラーが出てしまいます。 AS2.0では移動、ボタンで弾作成(+弾数制限+画面端で破棄)、敵の当たり判定までは作ってあるのですが、 一部ずつ試していきたいので、今のソースは自動で弾を作成して右に進んでいき画面端で消えるようにする部分です。 removeChildの使い方について調べては見たのですが、未定義で使用しているとは思えないのでよくわかりませんでした。 キャラクターの移動についてはすでに移行できたので、それ以外の部分についてのソースを次に記します。 よろしくお願いします。
ソースです。
http://hakuhin.hp.infoseek.co.jp/main/as/shot.html#SHOT_00_00 こちらページを参考にして作成しました。
//砲弾制限
var GunMax :int = 3; // 弾の最高数
var GunUse:Array = new Array();
for(var i:int=0;i<GunMax;i++){
GunUse[i] = 0;// 弾の使用フラグ
}
function GunExecute(){
for(var i:int=0;i<GunMax;i++){
if(GunUse[i] == 1){
// 座標に移動量を足しこむ
["gun"+1]x += ["gun"+1].dx;
["gun"+1]y += ["gun"+1].dy;
// 画面外に移動したら弾を破棄する
if(["gun"+1].x < 0) GunDelete(i);
if(["gun"+1].x > 600) GunDelete(i);
if(["gun"+1].y > 450) GunDelete(i);
if(["gun"+1].y < 0) GunDelete(i);
}
}
}
// 弾破棄
function GunDelete(ID){
"gun".removeChild("gun"+1);
GunUse[ID] = 0;
}
//gunのインスタンスを生成
addChild(new getDefinitionByName("gun"+1));
["gun"+1]x = 100;
["gun"+1]y = 100;
463 :
New_loading...774KKB :2008/11/28(金) 14:37:19 ID:MlypFaJZ
>>460 回答ありがとうございます.
>そりゃAS3.0の書き方だろうに
そうだったんですか.
勉強不足でした.
今までAS3.0で書いていたのですが,諸事情によりAS2.0を使わなければならない状況になってしまったため,わかりませんでした.
ぜひ,AS2.0でMovieClipを継承するクラスの使い方をご教授いただけないでしょうか?
>>461-462 無茶苦茶すぎて笑うしか無い
1冊AS3.0の本読んでからの方がいいんじゃないか
>>463 継承の仕方はAS3.0と同じでextends使えばいいんだけど、そこから懇切丁寧に長文書く気は無い
他の人よろしく
>>464 ActionScript3.0 プログラミング入門
という本と、ネットでもAS3.0に関するサイトをいくつか回ってみたのですが、
買った本ではシューティングゲームを作るには至りませんでしたので、
かなり無知なままにいじくってしまいました。
何かお勧めの本やサイトなどありませんでしょうか?
>>463 ああ、つーか2.0なら_rootならlineToもmoveToも普通に使えんじゃね?なんか他の所が原因で動かねーんじゃねーのかな
外部asファイルの扱いとか、カスタムクラスの扱いとかで
2.0のリファレンス読んだ方がいいよ
467 :
441 :2008/11/28(金) 15:09:18 ID:7D15k7nw
>>442 どうもありがとう。
実際には空のムービークリップを作ってやってたんだけど、
同じムービークリップにloadしてたので空白が開いていたようです。
結局2つ用意してonLoadCompleteのタイミングでswapDepthsして
表示させるようにしてみました。
切れ目無く表示されるようになりました。
468 :
tomomi :2008/11/28(金) 15:15:54 ID:xePkP8xF
フラッシュでHPをつくったのですが、アップロードすると、ストップアクションがきかず、フレームにそって画像がながれてしまいます。すべて流れた後は正常に動きます。 swfファイルは問題なく、アップロードしたときだけアクションがききません。どなたか、助けてください。 ちなみにサイトは on(release){ nextFrame();} 矢印を押すとネクストフレームで画像がみれるという簡単なものです。(コンタクトというページにメッセージ書き込みが機能があります。) 助けてください!! AS2
470 :
465 :2008/11/28(金) 15:30:47 ID:h5Ov3I6a
>>469 わかりました。
移行にしても新しく作るにしても、一からやってみます。
わざわざありがとうございました!
471 :
New_loading...774KKB :2008/11/28(金) 15:36:55 ID:MlypFaJZ
>>466 わかりました.
いろいろな書籍などを参考にしてもう少し勉強しようと思います.
回答してくださった皆さん,ありがとうございました.
>>465 1から作り直した方が早いも。マジで。
細かいところが微妙に変更されてて、気付かないと延々悩む。
例えば、外部ファイルの解析では
System.useCodepage = true;
↓
System.useCodePage = true;
だし。
>>468 ブラウザは何よ? ローカルでのブラウザ動作は?
>>472 いったい2つのどこが違うのか少し悩みました。
確かに無理にやってわからんわからんって悩んでるだけ時間がもったいないですね。
ありがとうございます。
474 :
tomomi :2008/11/28(金) 17:50:43 ID:xePkP8xF
>>472 さん、
ブラウザはサファリVersion 3.1.2です。
475 :
Now_loading...774KB :2008/11/28(金) 18:15:19 ID:jpW3R4Jp
onMouseWheelで windowsとmacでdeltaの値が違いすぎ、 macだとすごい速さになってしまいます。 解決方法はありますでしょうか?
>>475 getVersionでOS判別して速度係数みたいなものを掛ける
477 :
476 :2008/11/28(金) 18:53:43 ID:xn07Oaq7
>>475 OSだけならこれでよかったみたい
System.capabilities.os
>>452 できるんだろ、FlashPlayer10かAIR1.5なら。
なぜか478が透明あぼーんだな
481 :
Now_loading...774KB :2008/11/29(土) 20:17:55 ID:8npf49CI
var a:int = new int( 1 ); var b:int = a; a++; trace( b ); の結果が1なんですけど どうしたらaのアドレスをbに格納できますか?
482 :
Now_loading...774KB :2008/11/29(土) 20:44:42 ID:8npf49CI
あ、ていうか質問を変えます!スミマセーヌ。 ちなみにAS3+CS3です。 ていうかプログラミング全般の質問になるんですが ある条件がtrueのときは while( a < b ) という処理を行ってfalseのときは while( a > b )という処理を行いたいのですが if( true ) { while( a < b ) { ... } } else { while( a > b ) { ... } } って同じような処理するのがバカらしく思ったんです。 実際はwhileの中身の処理は複雑で、関数にしたら何個も引数を渡さなければならなくなるので どうしようかなと…。 って思ったらその関数の中に関数作ればいいのか…w なんか自己解決したwww
( ´・ω・`)触れてはいかん
485 :
Now_loading...774KB :2008/11/30(日) 06:22:24 ID:0rOxGTIU
スミマセーニョ これは流行る
スミマセーニョ!
すんごい初歩的なことなんですが…… MCの中からメインタイムラインを操作したいのですが、 ActionScript2.0で可能だった _root.play(); に当たるソースコードがわかりません root.play();とすると未定義の可能性のある〜〜とか言われて怒られました どうなってるんでしょうかAS3
>>487 MovieClip(root)
オブジェクト指向的に、あんまり良くないとかでこんな形になったんだっけか
AS3で質問させて下さい シンボルをムービーで作って例えば_mc1"あ"_mc2"い"〜_mc5"お"として _mc = _mc2 + _mc4 + _mc1 stage.addChild(_mc) みたいな事は可能でしょうか?
functionの使い方で質問があります。 レイヤーmainに lv.onLoad = function(success) { function tag(){ var tagtime:Array=byogaT; trace(" "+tagtime); } } と記述して、別のレイヤーbtnに on(release){ _root.tag(); } と書いてtag()を呼び出そうとしたのですが、上手くいきません。レイヤー越しにファンクションを呼び出すには どうしたら良いですか?
>>489 あ、い、、、が意味不明だが、
_mc.addChild(_mc2);
_mc.addChild(_mc4);
_mc.addChild(_mc1);
stage.addChild(_mc);
とかじゃね
>>490 function tag(){ ...}を外で定義汁
>>491 言葉たりなくてすみません
_mc1の中に"あ"_mc2の中に"い"などの単語のムービーを作り
それをStringの足し算の様に出来ないのかと言う事です
すいませんFlex(AS3)で質問させてください。 Imageのsourceに指定した画像の透過の部分をクリックしても反応しないように、 画像の透過な部分を元にヒット領域を設定したいのですが、 うまい方法はないでしょうか?
>>491 外部からデータをロードしてますので、外では定義できないのです。何か方法をご存知の方いらっしゃいませんか?
>>494 >外部からデータをロードしてますので、外では定義できないのです
それだけだとなんで外で定義できないのかわからん。
ロードしたデータが必要なら後から参照すればいいだけだし、何が問題で
何をしたいのかもっと詳しく。
>>492 +演算子でmc足すとかは無理
書いたようにコンテナにaddして座標をそれぞれ設定とかになるかな
>>494 外でというのはtag()の定義を
lv.onLoad = function(success) {...}
から出せということ
スコープを勉強汁
>>495 ロードしたデータが必要になります。参照って言うのはどうするのでしょうか?
>>497 ロードしたデータはlvに格納されてるわけでしょ?
だったらデータが必要な時はlvを参照するか、ロード完了後にデータを別の変数にでも代入しとけばいい。
とにかくそんなところで関数定義する意味ナシ。
参照については
>>496 がいってるように、スコープを勉強しよう。
度々の質問失礼します。 er.setMask(_root.mask); で、ムービークリップmaskにマスクを設定したのですが、 逆にこれを外すことって出来ないのでしょうか?
あ、回答ありがとうございます!スコープについては今勉強してます。
500です。すみません、半分自己解決しました。 しかし、マスク解除は出来たのですが、その下の機能が使えない状態です。 flvplaybackにマスクをかけたのですが、その状態だとシークバーが使えないため、 解除したのですが、それでも使えない状態になってしまっています。困ってます助けてください。
502 :
Now_loading...774KB :2008/12/01(月) 22:28:07 ID:9RvkXM7M
AS記述に特化したエディタ・・・需要ありますか?
503 :
492 :2008/12/01(月) 22:30:52 ID:YBe90ycI
Flash8 AS2.0で質問です。 外部画像をムービークリップにロードしたんですが クリックしても反応しません。なぜでしょうか。 var mcLoader:MovieClipLoader = new MovieClipLoader(); this.createEmptyMovieClip("mc",this.getNextHighestDepth()); mcLoader.loadClip("image01.jpg",this.mc); mc.onPress = function(){ trace("クリックされました。"); };
>>504 loadすると、mcに定義されたイベントがクリアされるんじゃなかったっけ?
onPress等はonLoadInitあたりで定義するといい。
AS2で delete ayer.onRelease と記述するとayer.onReleaseを消すことが出来ますよね。逆に復活させることって出来るのでしょうか? flashに詳しい方、教えてください。 ayer.onRelease=undefinedも試してみましたが、これでは完全に消すことは出来ませんでした。
>>506 何がしたいのかよくわからん。消したいのか、再び有効にしたいのか。
再度定義したいなら、またayer.onRelease=funtion(){}って書けばいいし
一時的にonReleaseを止めたいならenabled=falseにすればいいのでは?
>>507 あ、そうか・・・すみません。馬鹿でした;
どうもありがとうございました。
509 :
Now_loading...774KB :2008/12/02(火) 16:08:29 ID:c9DqBzyU
Flash-CS3-ProをWinXP-Proで使っています。ASは3.0です。 Stage上にXY軸のみを持つMC(mc0)があり、これにドラッグできる円形MC(mc1)がヒット したときの判定で困っています。 目標としては、 mc1がmc0の軸にのみ重なった時に反応が出るようにしたいのですが、 if (mc1.hitTestObject(mc0)==true { } とすると、mc0の枠全体に反応してしまいます。 代案として、mc0を軸ごとに分けて反応させることには成功したのですが、これだと他のif条件と 併記したとき記述が長くなりスマートではありません。 MCの塗りの部分(線分)にのみ反応させる方法はありますでしょうか? なお、hitTestPoint()ではmc0の基準点にしか反応させることが出来ませんでした。
>>509 mc1の中にさらに小さいムービークリップ(単位円とか)をおいて、それに対してHitTestする
でもこの方法だとmc1の移動速度が速すぎた場合HitTestが動くのかな?
ちゃんと判別するならmc1の存在する象限をチェックするのがいいと思う
>>509 面倒だからhitTest使わずにmc0、mc1の位置や大きさから計算する。
>>509 ああ、というかbitmapにすりゃいいんじゃね?
513 :
509 :2008/12/02(火) 20:15:59 ID:xw/pojqs
>>510-512 レス有難うございます。
509さんの前者の方法だと、軸に触れた瞬間を判定できないので採用は難しいです。
また次の動作として、「触れた瞬間に軸との重なりをSwapする」を考えているので、512さんの
bitmap法では出来ません。
やっぱり、軸で分けて処理した方が良いかと思っています。
>>502 Linuxで動くなら欲しい。
WinはFlashDevelopがあるからなぁ。
FLASHCS3 でactionscriptを書いているのですが、どうも書きづらい。 みなさんは外部エディタ使われますか? いいのがあったら教えて下さい。
Flexじゃ駄目なの?
有料は駄目じゃ...
519 :
515 :2008/12/04(木) 07:40:58 ID:yTmjKs64
>>516 >>517 >>518 ありがとうございました!早速使ってみます。
あと、
「透明からどんどん出現させつつ指定距離まで滑らかに移動」
ということをやりたいのですが
speed = (movedx - instance.x)/10;
で滑らかに移動するということではできたのですが
0から移動を開始しこれにさらにmovedxに到達した場合、アルファを100%にする
という計算式があれば教えて下さい。
よろしくおねがいします。
520 :
519 :2008/12/04(木) 09:05:37 ID:yTmjKs64
すいません、tweenerというのを発見したので勉強してみます。 ありがとうございました。
521 :
Now_loading...774KB :2008/12/04(木) 16:10:31 ID:pZlrt/Hr
AS2で、 MC.onEnterFrame = func; function func(){ trace(this); //結果 _level0.MC } のようにインスタンスのパスを取得できたのですが、 AS3ではどうすればよいのでしょうか。 MC.addEventListener(Event.ENTER_FRAME, func); function func(e:Event):void { trace(this); //結果 [object MainTimeline] } のように書いても取得できませんでした。
二次配列のソートをしたいのですが、 array={{100,c},{30,b},{80,c},{70,b},{1000,a}} をソートして、 array=={{30,b},{70,b},{80,c},{100,c},{1000,a}} と言う風に並べ替えたいです。数字だけのソートで、文字列は数字から分離せずについてくるようにしたいのですが、 何かいい案は無いものでしょうか? AS2
>>522 array.sortOn()
って、それarrayじゃなくてobjectやん
524 :
Now_loading...774KB :2008/12/04(木) 18:05:00 ID:spanOYDw
AS3で参考書?を見ながら同じ物を作ろうかと思ってます。 微妙に動作が違っていてどこが違うか分からなかったんですが、 よく見ていたところ、パブリッシュ設定の画面で、見本はHTML という項目がなかったのに対して自分が作っているものにはありました。 このHTMLの項目がないっていうことはどのような操作をしているのでしょうか?
>>524 パブリッシュ設定の[形式]の項目のタイプ設定で、HTMLの欄のチェックがついてないだけじゃね?
526 :
Now_loading...774KB :2008/12/04(木) 18:32:58 ID:spanOYDw
527 :
Now_loading...774KB :2008/12/04(木) 18:43:58 ID:hhOfOzi5
Flash-CS3-ProをWinXP-Proで使っています。ASは3.0です。 ステージ上のMC(mc1)を押すと、その隣にあるテキストフィールドのキャレット位置を先頭に 来るようにしたく思っています。 つまり、 [| ] な感じです。 動作はMC(mc1)にリンケージしたasファイルに書いています。 AS2.0以前なら、テキストフィールドのインスタンスをtxt1とすると、on (release) などで Selectionクラスを使って Selection.setFocus(_root.txt1); Selection.setSelection(0, 0); とすれば出来たので、AS3.0でも同じような感覚で下のように書きましたがキャレット自体が 現れません。 MovieClip(this.parent).txt1.selectable=true; //MovieClip(this.parent)はRootのステージです MovieClip(this.parent).txt1.alwaysShowSelection=true; MovieClip(this.parent).txt1.setSelection (0,0); どうしたら良いでしょうか?
528 :
Now_loading...774KB :2008/12/04(木) 18:54:09 ID:g3cG6UAd
AS3の質問です。 AS2では、下記でウィンドウを閉じていました。 on (release) { getURL("javascript:window.close();"); } AS3ではどう書けば良いのでしょうか。 下記のように getURLに近いものを用意したのですが、動作しませんでした。 (javascript:window.close(); でなく、html名を記述するとリンクしました。 リンク動作自体は間違っていないようです) stage.addEventListener( MouseEvent.CLICK , WinClose ); function WinClose( event:MouseEvent ) { var url:URLRequest = new URLRequest( "javascript:window.close();" ); navigateToURL( url ); }
>>527 Stageのfocusプロパティにtxt1を設定すればいいんでね?
stage.focus = MovieClip(parent).txt1 か?
AS2です。 テキスト入力部分をクリックして、テキスト入力が可能になったら、ボタンbtn1を 無効にする。という処理をしたいのですが、どうしたら出来ますか?詳しい人いたら教えてください。
hoge = [0,100]; a = hoge; b = hoge; c = hoge; a[1] -= 50; 上記のように各変数a、b、cに配列hogeを代入してaの1番目の数から50を引きます。 これでa[1]は50になりますが、なぜかbとcの[1]まで50になってしまいます。なぜでしょうか?分かる方お願いします。
参照型だからです
そういう仕様だからしょうがない。 ププッ
>>532 レスありがとうございます。配列の場合は自動的に参照してしまうんですか?やはり
a = [0,100];
b = [0,100];
c = [0,100];
と記述するしかないのでしょうか?
535 :
527 :2008/12/05(金) 00:19:10 ID:oZdC1Kxi
>>529 Thx。出来ました。あと、
var ThisRoot:MovieClip=root as MovieClip; として、
stage.focus = ThisRoot.txt1; でもOKでした。
>>530 txt1.onSetFocus = function(oldFocus:Object) { btn1.enabled = false; }
txt1.onKillFocus = function(newFocus:Object) { btn1.enabled = true; }
でどうだ?
>>534 1つの物を3人が使おうとしても困るだろw
1人分ずつそれぞれのを作ってやる
>>534 すんごい分かりやすく言うと
a = hoge;
ってやってもaの中に格納されるのは[0,100]じゃなくてhogeっていう配列
だからaから引こうがcから引こうが変わるのはhoge
flashdevelop + flashcs3 の環境で困っています。 flashcs3側で mcインスタンス tama を配置しました。 そして、 flashdevelop 側に tweener を入れてパスを通しました。 しかし以下のコードで main.as 20 未定義のプロパティtweener へのアクセスです とエラーが出ます。 package { import flash.display.MovieClip; import flash.display.Sprite; import caurina.transitions.Tweener; public class Main extends Sprite { public function Main() { Tweener.addTween(tama, {x:50, y:50, alpha:0.2, transition:"easeinoutquad"}); } } } ちなみにパスが通っているかどうかは import caurina.transitions.Tweener; の行で f4 キーを押すと tweener の中身が表示されます。 よろしくお願いします。
>>538-539 レスありがとうございます。配列の代入は普通とは違うんですね。勉強になりました。
>>540 すいません。自己解決しました。
flashdevelop 側と flashcs3の両方に pathを通さないとだめだったみたいです。
543 :
522 :2008/12/05(金) 12:57:55 ID:sUCEXJRU
>>523 すみません。暫く調べてみましたが、解りませんでした。もしよろしければサンプル等を頂けませんか?
もしくは、ほんの少しのヒントでも構いません。助けてください……
544 :
528 :2008/12/05(金) 13:52:12 ID:SR9yn272
>>536 ありがとうございます!
情報後だしで申し訳ないのですが、すでにサーバにうp済みで、
それで困っていました。
後半で教えていただいた
ExternalInterface.call("window.close");
こちらでも試してみたのですが、上手くいきませんでした。
AS3自体まだ把握できてないところが多いので、
全く違うところでミスしているかもしれません。すみません。
やりたかったもののサンプルがAS3だったため
できるだけAS3でつくりたかったのですが、
AS2でも実現できたので、また別の機会に挑戦してみようと思います。
window.close自体は自己解決もできてない状態なのに申し訳ありません。
546 :
528 :2008/12/05(金) 15:32:36 ID:SR9yn272
>>545 いや、safariで試したんよ…
と思ったが、念のため windowsXP IE6 で
ExternalInterface.call("window.close");
といれてみたら、できたー!!!
>>536 ,545 トントン!!
ただ、なぜか「このウィンドウを閉じますか」のダイアログが2回出てくるので、
まだ解決しないといけないところはあるかもしれないです。
でも、とても助かりました。ありがとうございます!
質問です。MX2004使用。 あるムービークリップ(movie1)に、 タイムライン別に二種類の絵柄を入れ、gotoAndPlay(フレーム)で絵柄が切り替わるようにしました これをシーン上に置き、別のパーツを押すと _root.インスタンス名.gotoAndPlay(フレーム) で指示を送り、絵柄を切り替える。これはうまくいったのです で、別のムービークリップでシンボル(シンボル1)を作り、シンボル1の中にmovie1を入れ、 このシンボルをシーン上に置き、 また別のパーツから _root.(シンボル1のインスタンス名).(movie1インスタンス名).gotoAndPlay(フレーム)と指示を出す。 ところが絵柄が切り替わらないのです。 二つのパーツの違いは、階層が一つ余計にあるだけ。 シンボル1の構造は一フレームだけで、中にムービークリップmovie1が置いてあるだけです これは何が原因なのでしょうか? インスタンス名を付け忘れていないかとか、そういうことは確認しました。
自己解決スマスタ。 ムービークリップのインスタンス名に"-"マイナスを使用していたのが動作しない原因でした。 インスタンス名のマイナスを除くと、設計通りの動作をしました。
549 :
Now_loading...774KB :2008/12/06(土) 01:00:58 ID:OPIsxcrd
文字列を参照渡ししたいときってどうすんの? var obj:Object = { str:"aaa" };とかやって渡す? もっといいやりかたない?
文字列だってオブジェクトだしふつーに参照渡しだろ?値は変更不可(immutable)だけど。 でも、気持ちは分かるよ。うん。 本質的には var obj:Object = { str:"aaa" }; みたいにやるしかないんじゃないかな。 ObjectよりはArray使う方が見た目スマートかなー。好みの問題かね。 var strref:Array = [ "hello" ]; とか。値の変更は strref[0] = "bye"; で。 それか public class MutableString { public var value:String; ... }; みたいにクラスを自作。 でも自作の労力に見合う使い道がなさそう。ObjectやArrayで十分じゃね?
AS3に参照渡しなどない
552 :
Now_loading...774KB :2008/12/06(土) 03:06:40 ID:OPIsxcrd
>>550 丁寧な回答THX!!
配列でやってみるよ!アリガトーニョ!
553 :
550 :2008/12/06(土) 03:54:48 ID:EicvLhrc
>>551 あーそか。参照型を値渡ししている、が正解かね?ガッコでやったような希ガス
でも549さんとは心が通じたみたいだからヨシとしようじゃないか。なぁ兄弟。
555 :
Now_loading...774KB :2008/12/06(土) 09:44:05 ID:dmddMvrv
MacOSX,CS3の環境です ソースを読んでいてこんな処理があったんです onProbability:Number = .2 =.なんて見たことなく、ググってもうまく見つからず、玄人の方々ならと思いやってきました。これってどんな処理なのでしょうか
0.2
AS3での質問です。 タイマーを使ってアニメを作っているのですが /* * mc bgshow を動かすタイマー */ var bgtimer = new Timer(500,1); bgtimer.addEventListener(TimerEvent.TIMER,bgshow); bgtimer.start(); /* * mc domain を動かすタイマー */ var domaintimer = new Timer(100,1); domaintimer.addEventListener(TimerEvent.TIMER,movedomain); domaintimer.start(); とやってそれぞれ bgshow , movedomain を動かしています。 TIMERを一つだけ使って処理させた方が良いような気がするのですがどのようにすれば 良いのでしょうか。また、この場合、タイマーを終わらせる removeEventListerner はどこに記述すればよいでしょうか。
>>557 >TIMERを一つだけ使って処理させた方が良いような気がするのですがどのようにすれば良いのでしょうか
movedomainの中でbgshowを実行すれば良いんじゃね。
movedomainが5回実行されるたびにbgshowを実行すれば良いような。
>タイマーを終わらせる removeEventListerner はどこに記述すればよいでしょうか。
終了条件がわからないので何とも言えない。
まぁ逆に言えば「終了したい時に呼び出す」ってことなんだけど
>>558 ありがとうございます。それでやってみます。
また終了条件なんですが
var domaintimer = new Timer(100,50);//50回繰り返し処理
domaintimer.addEventListener(TimerEvent.TIMER,movedomain);
とすれば domaintimer が 50 回実行されたらストップしますよね。
その際は
domaintimer.removeEventListener(TimerEvent.TIMER,movedomain);
をやらなくても 大丈夫なんでしょうか。
50回繰り返し処理後に自動的に イベントリスナーが削除されるみたいな。
質問させて下さい。 ActionScript3.0でステージ全体ではなくて 特定のムービークリップだけを縦横比を保ったまま ウィンドウに合わせるにはどう記述すればよいんでしょうか? 本を見てもステージスケールの事しか書いてなくて困っています。
561 :
Now_loading...774KB :2008/12/06(土) 15:29:39 ID:lJidIBmN
すいません基本的な質問かもしれませんが聞いていいですか? (x1、y1)から (x2、y2)へのMCのトゥイーンをアクションスクリプトで行う場合、 まず先にx座標だけトゥイーンし、xが完了後次にy座標のトゥイーンをするようにしたいのですが、 この場合、アクションスクリプトはどうなるんですかねぇ?
>>561 そのまんま先にx座標を動かして次にy座標を動かせばいいんじゃないですかねぇ?
563 :
Now_loading...774KB :2008/12/06(土) 16:24:36 ID:lJidIBmN
例えばインスタンスMCをTweenする場合 var Mytween:Tween = new Tween( MC, "x", Regular.easeOut, x1, x2, 3, true); var Mytween:Tween = new Tween( MC, "y", Regular.easeOut, y1, y2, 3, true); ってするとx、y座標同時にTweenしてしまうんです。 x→yの順序のつけ方が分からないんです。
xのトゥイーンは終わってからyをトゥイーンしろって事でしょ
565 :
Now_loading...774KB :2008/12/06(土) 16:37:35 ID:lJidIBmN
同じフレーム内で行いたいのですが
var MytweenX:Tween = new Tween( MC, "x", Regular.easeOut, x1, x2, 3, true); MytweenX.onMotionFinished = function(){ var MytweenY:Tween = new Tween( MC, "y", Regular.easeOut, y1, y2, 3, true); } とかじゃないの?
568 :
Now_loading...774KB :2008/12/06(土) 17:11:29 ID:lJidIBmN
>567 ありがすっ! やってみます
560です。 他の板で教えて頂き解決しました。 ありがとうございました。
>>522 ,543
var array:Array = [[100,"c"],[30,"b"],[80,"c"],[70,"b"],[1000,"a"]];
array.sortOn(0, Array.NUMERIC);
571 :
Now_loading...774KB :2008/12/06(土) 18:58:37 ID:3CTXVwTU
WinXP-ProでFlash-CS3-Proを使っています。ASは3.0です。 本やWebを参考にキーコードを得るASファイルを作成しましたが、Stage内のテキストフィールドを クックしないと特定のキーコードしか得られないので困っています。 ASファイルのコンストラクタには stage.addEventListener (KeyboardEvent.KEY_DOWN, keyCode_check); と書いて、呼び出す関数には、 public function keyCode_check (keyEvt:KeyboardEvent) { trace ("keyタイプ: "+keyEvt.type); trace ("Keyコード: "+keyEvt.keyCode); trace ("Charコード: "+keyEvt.charCode); } としました。この場合、単にキーを打つと特定のキーしかtraceで出力されず、Stage内のテキスト フィールド(インスタンス名txt:何もイベントや関数を設定していない)をクリックして初めてtrace が出ます。 例: 何もしない場合、Dキーを押すとtraceされるがAキーはtraceされない。Aキーはテキストフィールド をクリックするとtraceできる。 考えられる原因は何でしょうか?
>>570 どうもありがとうございました。でも、これだと小数点の時にソートが出来ないんですよね……
小数点の降順でソートする時にはどうすればいいのでしょうか……?申し訳ありませんが今一度お力を貸してください。
array={タグ,13.792,null,2.142,ポイント,25.025,タグ,19.644,タグ,22.281,null,10.770,ポイント,31.686,タグ,78.304,タグ,54.513} をtrace(tagmain.sortOn(1, Array.NUMERIC)); でソートすると null,10.770,タグ,13.792,タグ,19.644,null,2.142,タグ,22.281,ポイント,25.025,ポイント,31.686,タグ,54.513,タグ,78.304 と成ってしまうんですよね…… パッと見上手くいったと思ったら2.142が真ん中に入ってる…… 試しに1000倍してソートしても null,10770,タグ,13792,タグ,19644,null,2142,タグ,22281,ポイント,25025,ポイント,31686,タグ,54513,タグ,78304 となるだけで変わってない。これって何ででしょう?
>>570 >でも、これだと小数点の時にソートが出来ないんですよね……
えー、そうなんだ。Array.NUMERICショボイな。んじゃ↓。
var array:Array = [[2,"c"],[1.3,"b"],[0.8,"c"],[0.7,"b"],[10.1,"a"]];
var compare:Function = function (o1:Object, o2:Object):int {
var n1:Number = Number(o1[0]);
var n2:Number = Number(o2[0]);
return (n1 == n2) ? 0 : (n1 < n2) ? -1 : 1;
}
array.sort(compare);
降順なら、
array.sort(compare, Array.DESCNDING);
575 :
574 :2008/12/06(土) 22:05:22 ID:EicvLhrc
うへぇ typoした 降順なら、 array.sort(compare, Array.DESCENDING); それか、compareの比較を逆にして単に array.sort(compare)。 var compare:Function = ... { ... return (n1 == n2) ? 0 : (n1 > n2) ? -1 : 1; } array.sort(compare);
576 :
Now_loading...774KB :2008/12/07(日) 16:57:12 ID:RU7csk68
actionscript3.0です TextFieldにhtmlTextでimgタグを使って画像表示しているのですが この表示した画像のwidthとheightを調べる事ってできますでしょうか?
577 :
Now_loading...774KB :2008/12/07(日) 20:27:14 ID:B9fQNmTv
そうめん便利だあああああああぁぁぁぁっ!!!
>>577 どういうときに使うのかわからん
スレッドねぇ…どう便利?
579 :
Now_loading...774KB :2008/12/07(日) 20:52:29 ID:B9fQNmTv
>>578 一切EventListenerを使うことがなくなった!
EventListener地獄から抜け出せるということだけでも大満足!!
ついでにTweenerThreadを使ったプログラムからのアニメーションが超便利!!
興奮して鼻血でそー!!w
580 :
Now_loading...774KB :2008/12/07(日) 20:57:38 ID:B9fQNmTv
>>578 SerialExecutorを使うと
簡単に タイトル画面 → ゲーム画面 → ゲームオーバー → タイトルに戻る
とかできるのも最高!
そうめん使ってないときはいろんなものが開放しにくかったから
まともにタイトル画面に戻るような処理ができんかった。
EventListenerでがんばるとスパゲッティになるしねw
581 :
Now_loading...774KB :2008/12/07(日) 21:01:04 ID:B9fQNmTv
addEventListener( Event.INIT, 〜〜〜〜〜 とか一回実行されたらすぐ開放しなきゃならんとかアホらしw そうめんそうめん!
>>576 TextField.getImageReference()
スレチ
>>577 検索して初めて知った 凄く便利そうに見えるけどなんかよく分からない
簡単に説明して!
スレ違い
586 :
Now_loading...774KB :2008/12/07(日) 22:22:23 ID:B9fQNmTv
>>584 実はオレもマルチスレッドプログラミングしたことないからアレなんだがw
そうめんを使うとイベントリスナーを使う必要がなくなる
なぜなら、そうめんのthreadにeventメソッドが存在するから。
そうめんのeventメソッドは
event( mc, MouseEvent.CLICK, Click );
のように記述するんだけど、上記のコードはmcってムービークリップをクリックすると
Clickメソッドが呼ばれるのね。
ここまでの説明だとaddEventListernerと一緒。
だけどそうめんのeventは一回しか実行されない。
event( mc, Event.ENTER_FRAME, EnterFrame );ってやっても
EnterFrameはフレーム毎に呼ばれない。
そうめんのイベントは一回呼ばれたら即効でremoveEventListenerされると考えるといいかも(たぶん)
このおかげでremoveEventListenerする必要がない。
え?じゃあどうやってフレーム毎に処理すんの?って話だけどそれは
呼び出したEnterFrameメソッドの中でnext(EnterFrame)を書けばOK
これでEnterFrameメソッドがフレーム毎に呼ばれる。
nextメソッドは次に処理する関数を決めるもの。
この、nextメソッドに処理が移るタイミングは、そうめんの初期化で
Thread.initialize(new EnterFrameThreadExecutor());
決めることが出来る(上のコードはたぶんスレッドの実行タイミングをフレーム毎に設定して初期化という意味)
587 :
Now_loading...774KB :2008/12/07(日) 22:24:46 ID:B9fQNmTv
スレチなのであとはマニュアルを熟読するのだ!! おれはそうめんのおかげで天使になれたぜ!
なんとなくわかったっ AS2→3でEventListener馴染みないなー めんどくさいなー とか思ってたから そうめん勉強してみようかな 何か色々楽そうだし
589 :
Now_loading...774KB :2008/12/07(日) 22:33:15 ID:B9fQNmTv
>>588 おれは2日で脳みそからそうめん汁溢れたから
がんばってそうめん汁をすすり始めたほうがいい!ってオレなんでこんな宣伝してんだw
とにかく超便利!
みんなスマソ
そうめんというものを初めて知って そんでもって印象は最悪だ うるさすぎ
591 :
Now_loading...774KB :2008/12/07(日) 22:41:31 ID:B9fQNmTv
スパムったせいでそうめんの印象が悪くなったな。 ID:B9fQNmTv は技術交換スレにでも逝っとけ。でもまたスパムって嫌わんなよw
593 :
Now_loading...774KB :2008/12/07(日) 23:23:56 ID:w8+g9DjY
>>592 よくわからんが何でそんなに引き延ばしたがんの?
594 :
571 :2008/12/08(月) 04:50:17 ID:1fFM9P2d
すいません。上のキーコードの件、お願いします。
595 :
Now_loading...774KB :2008/12/08(月) 11:09:22 ID:zibHGb6x
596 :
Now_loading...774KB :2008/12/08(月) 11:14:25 ID:zibHGb6x
>>571 原因分かったよ!
えっとね、Aキーを押すと裏で動いてるFlash CS3が反応するからダメなの。
ようするにパブリッシュしたSwfを実行すれば反応する。
気にせず開発を続けるべし!!
MCのswapDepthsが完了したかどうかのイベントって取得できますか?
>>596 プレビューで確認する時は制御のキーボードショートカットを無効、にすればいい。
599 :
571 :2008/12/08(月) 17:27:10 ID:IE1Xiu0i
フラフラランダム移動にフェードインを付けたい。
右側から左方向へ移動させたい。
ttp://nuko.info/cps/#spr03 ttp://oshiete1.goo.ne.jp/qa912178.html ↑参考スクリプト
XP、AS1.0、ParaFla
------------------------------------------------------------------
onClipEvent(load){
//設定==========================
x1a = 100; //開始x座標 (1 = 1px)
x1b = null;
x2a = 25; //終了x座標 (1 = 1px)
x2b = 300;
y1a = 10; //開始y座標 (1 = 1px)
y1b = null;
y2a = 10; //y座標のズレ (1 = 1px)
y2b = null;
widtha = 150; //揺れ幅 (1 = 1px)
widthb = 250;
yspda = 10; //揺れ速度 (1 = 0.01θ/frame)
yspdb = 40;
xspda = 6; //下降/上昇速度 (1 = 0.1px/frame)
xspdb = null;
scalea = 100; //大きさ (1 = 1%) scaleb = null; alphaa = 100; //不透明度 (1 = 1%) alphab = null; rota = 50; //回転速度 (1 = 0.1°/frame) rotb = null; dupeca = 5; //発生間隔 (1 = 1frame) dupecb = null; remove = 0; //最後に [0:即座に消す / 1:数フレーム後に消す / 2:消さない] remcount = 1; //↑が[1]の場合のフレーム数 (1 = 1frame) objout = 1; //消え方 [0:普通に消す / 1:透明度を下げて消す / 2:縮小して消す / 3:1と2] outalp = 4; //↑が[1]の場合の透明度低下量 (1 = 1%/frame) outscl = -10; //↑が[2]の場合の拡縮率 (1 = 1%/frame ... +:拡大 -:縮小)
//以下数値算出=================== if(y1b == null || y1a == y1b){ y1 = y1a; }else{ y1 = Math.floor(Math.random() * (y1b - y1a +1)) + y1a;} if(y2b == null || y2a == y2b){ y2 = y2a; }else{ y2 = Math.floor(Math.random() * (y2b - y2a +1)) + y2a;} if(x1b == null || x1a == x1b){ x1 = x1a; }else{ x1 = Math.floor(Math.random() * (x1b - x1a +1)) + x1a;} if(x2b == null || x2a == x2b){ x2 = x2a; }else{ x2 = Math.floor(Math.random() * (x2b - x2a +1)) + x2a;} if(widthb == null || widtha == widthb){ width = widtha; }else{ width = Math.floor(Math.random() * (widthb - widtha +1)) + widtha;}
if(yspdb == null || yspda == yspdb){ yspd = yspda / 100; }else{ yspd = (Math.floor(Math.random() * (yspdb - yspda +1)) + yspda) / 100;} if(xspdb == null || xspda == xspdb){ xspd = xspda / 10; }else{ xspd = (Math.floor(Math.random() * (xspdb - xspda +1)) + xspda) / 10;} if(scaleb == null || scalea == scaleb){ _yscale = scalea; _xscale = scalea; }else{ _yscale = Math.floor(Math.random() * (scaleb - scalea +1)) + scalea; _xscale = _yscale;} if(alphab == null || alphaa == alphab){ _alpha = alphaa; }else{ _alpha = Math.floor(Math.random() * (alphab - alphaa +1)) + alphaa;} if(rotb == null || rota == rotb){ rot = rota / 10; }else{ rot = (Math.floor(Math.random() * (rotb - rota +1)) + rota) / 10;} if(dupecb == null || dupeca == dupecb){ dupec = dupeca; }else{ dupec = Math.floor(Math.random() * (dupecb - dupeca +1)) + dupeca;}
theta = Math.floor(Math.random() * (Math.PI * 200)) / 100; dy = y2 / ((x2 - x1) / xspd); count = 0; flag = 0; stp = 0; _x = x1; zure = 0; if(!_parent.num){_parent.num = 0;} } - onClipEvent(enterFrame){ //フェードイン=================== if(objout == 2){ this._yscale += inscl; this._xscale += inscl; if(_yscale >= 0 || _xscale >= 0){ stp = 5; this.removeMovieClip();} }
//以下規定事項=================== if(stp == 0){ _y = Math.sin(theta) * width + y1 + zure; _x += xspd; _rotation += rot; theta += yspd; zure += dy; if(flag == 0){ count++;} if(count >= dupec && flag != 1){ _parent.num++; if(_parent.num > 1000000000){_parent.num = 1;} flag = 1; duplicateMovieClip(_parent.a0,"a"+_parent.num,_parent.num);} if(x1 > x2){ if(_x <= x2){stp = 1;} }else if(x1 < x2){ if(_x >= x2){stp = 1;} } }else if(stp == 1){ if(remove == 0){ stp = 2; }else if(remove == 1){ remcount--; if(remcount <= 0){ stop(); stp = 2;} }else if(remove == 2){ stop(); stp = 5; }
}else if(stp == 2){ if(objout == 0){ stp = 5; this.removeMovieClip(); }else if(objout == 1){ this._alpha -= outalp; if(_alpha <= 0){ stp = 5; this.removeMovieClip();} }else if(objout == 2){ this._yscale += outscl; this._xscale += outscl; if(_yscale <= 0 || _xscale <= 0){ stp = 5; this.removeMovieClip();} }else if(objout == 3){ this._alpha -= outalp; this._yscale += outscl; this._xscale += outscl; if(_alpha <= 0 || _yscale <= 0){ stp = 5; this.removeMovieClip();} } }} //---------できるだけコードも示す
阿呆だな
質問するときは要点をまとめて簡潔にするもんだ 小汚いソース延々と貼り付けたところで誰も読まないよ
610 :
Now_loading...774KB :2008/12/08(月) 19:15:59 ID:zibHGb6x
AS3でプログラミングしてるんだけど ルートとかステージとかにアクセス出来たり出来なかったりするじゃん? だから今までは必ずnewするときにnew Hoge(main);とかやって渡してたんだけど もういっそのことドキュメントクラスにstaticなプロパティ追加して public class Main extends MovieClip { public static var _this:Main; public static var _stage:Stage; public function Main() { _this = this; _stage = stage; } } ってやってどこからでも Main._rootでルートにアクセス Main._stageでステージにアクセスできるようにしちゃったんだけど これってよくないのかなぁ? どうもプログラミングスタイルが固まらない・・・。
>>610 AS3.0のパス設定はオレも悩んだ(今でも悩むw) そこで、
var RootDesu:MovieClip=root as MovieClip;
とか
MovieClip(root) は?
rootやstageにアクセス出来たり出来なかったりってのは 表示リストに追加する前にアクセスしようとするくらいしか思いつかないが addChildしてからアクセスしてる? まぁスタイルは人それぞれだから好きにすればいいんだろうけど
613 :
Now_loading...774KB :2008/12/08(月) 19:51:03 ID:zibHGb6x
>>611 ああーそれやるやるww
MovieClip(root)もやったw
MovieClip(root).addChild( hoge )とかw
ぱっと見なにしてんのかよくわかんないw
>>612 そうそう、addChildしたらアクセスできるようになるけれど
たとえばMovieClipを継承していないクラスがrootにアクセスしたいときとかさ!
そんなトキは起こらないのかな?
手元にaddChildされたMovieClipがあればrootやstageにはアクセスできるわけだから
そいつを通せばいいのか・・・??
ああー悩む
今回のpublic static var _this:Main; は便利だけどなんかしちゃいけないことをしているような気がする…。
614 :
Now_loading...774KB :2008/12/08(月) 19:58:35 ID:zibHGb6x
そもそもオブジェクト指向言語において静的メンバの使い道がわからん 使った瞬間そっから超裏技プログラミングになるし
>>614 代表的なものでいうならSingletonパターンとかだろうね
デザインパターンの本を一通り読んだほうが解決が早いかもよ
おれは枕のかわりにしてしまっているけど
616 :
Now_loading...774KB :2008/12/08(月) 20:56:20 ID:VZ4MUzo3
うれしいこと言ってくれるじゃないの まい枕のタイトル 「オブジェクト指向における再利用のためのデザインパターン」
なんかクラスとかステージとかごちゃごちゃ出てきてわけわかめになったんだけど、 AS3.0でAS2.0のグローバル変数(_root.hogeみたいなの)に当たるものって無いの? そういう相違ばっかり纏めた本が欲しいけど無いな… なんかもう根本的に違うから相違みたいな書き方じゃ無理なのかしら
読み物じゃないけど、相違の一覧なら。
ttp://livedocs.adobe.com/flex/3_jp/langref/migration.html >>610 がやってるような、Mainみたいにアプリケーション内で唯一かつ不変なものを
staticにしてグローバルにアクセスできるようにするのは一般的な手法だよ。
public class Main extends MovieClip {
private static var _main:Main = null;
public static function get main():Main { return _main; }
public function Main():void {
super();
_main = this;
...
}
}
「グローバル変数は悪」というけど全てが悪なのではないよ。適切な使い方もあるってことで。
620 :
Now_loading...774KB :2008/12/08(月) 23:59:25 ID:Wpt98DKf
>>619 お!?一般的な手法だったんだ
それは知らんかった。
じゃあさっそくつかってやってみよっと
621 :
Now_loading...774KB :2008/12/09(火) 00:02:44 ID:6eSR8THZ
>>619 お!?一般的な手法だったんだ
それは知らんかった!
じゃあさっそくつかってやってみるわ
おれも「グローバル変数は悪」と教わったけど、もしほんとうにそうなら
悪と感じるまでやってみればいいんだよな〜
622 :
Now_loading...774KB :2008/12/09(火) 00:03:25 ID:6eSR8THZ
orz 2重で書いちった
>>610 >>619 これは何をやってるの?最上位に仮のMC(オブジェクト?)っぽいもの作ってそこにみんなでアクセスしよう、ってこト?
質問ですが、 子MCをremoveChildで削除したとき、その中で定義したイベントを親MCで一括し、removeEventListenerできますか? 通常、子MC内で定義したイベントってremoveChildだけじゃ消えないですよね??
>>624 参照が無くなった場合にはいずれはGCされるけど、それまで無意味なリスナーの処理は動き続ける
そのMCでの終了処理(リスナーの非活性化とか)を行うメソッドを作っておいて、
削除するときはその前にそのメソッドを呼ぶようにするといい
626 :
Now_loading...774KB :2008/12/09(火) 11:48:33 ID:XR1pnjqb
var mother:MovieClip = new MovieClip(); mother.addChild( new MovieClip() ); //←ここ addChild( mother ); removeChild( mother ); mother = null; これってmotherに作られたMovieClipってGCされる??
>>625 ありがとうございました。
GCされるタイミングって決まってないんですよね?
子MCで
addEventListener(Event.REMOVED, finish);
function finish(e:Event):void{
hoge.removeEventListener(MouseEvent.CLICK, hoge1);
hoge.removeEventListener(Event.ENTER_FRAME, hoge2);
・
・
・
}
みたいな物を書いたのですが、どうも反応せず。Event.REMOVEDの使い方まちがっているのかな。
調べてみます。
>>624 Event.REMOVED か Event.REMOVED_FROM_STAGE を使うと良いと思う
removeChild が呼ばれたときに発生するイベント。
二つの違いはリファレンス見てくれ
629 :
Now_loading...774KB :2008/12/09(火) 12:23:23 ID:XR1pnjqb
>>627 そうめんつかえばいいのに・・・
またスパムとか言われそうだけど
630 :
Now_loading...774KB :2008/12/09(火) 12:49:14 ID:hi6RrxKI
acs2です。 setIntervalって定期的に実行するには便利だけど、 たとえば60秒周期でfunc()をファイアーさせようとすると、 setInterval(this, "func", 60000, arg1, arg2); みたいな書き方になると思います。でもこれだと最初に60秒休んじゃうんだよね。 60秒休み func() 60秒休み みたいになるんだけど func() 60秒休み func() みたいな感じにできないかね。
>>630 最初にfunc()を1回呼んでからsetIntervalすればいんじゃね
>>631 あー、
func()は一度呼び出すと行ったっきりになるんです。
で、intervalだとcelarIntervalできるんでいわゆる多重起動の防止になる、。。
と思い込んでいたが、clearintervalしても処理は続くよね。
なんとなくclearIntervalはkillしてくれるちうふうに勘違いしてた!
全然別のことだがバグが見えた!
633 :
Now_loading...774KB :2008/12/09(火) 17:51:55 ID:zS3+bsZP
環境は OS:WinXP-Pro,ソフト:FlashCS3-Pro(Player9.0,AS3.0) 入れ子のMC内にaddChildAt()で追加したMCのフレームが移動できず困っています。 ステージ上のMC(axis0)内に子MC(newStage)を置き、ボタンをクリックしてaddChildAt()でこの中に複数の 円形MC(pathMC0〜pathMC5)を置くようにしています。 これら円形MCは2つのフレームを持っており、これ自体をクリック(MouseEvent.MOUSE_DOWN)することで フレームアクションで2つのフレームを交互に行き来し色が変わるようにしたく思っています(白⇔オレンジ) テストとして円形MCを単独でステージに置いてクリックすると白⇔オレンジの色変化は出来ますが、本題 のFlashに組み込むと変化が起こりません。以下は円形MCのフレームアクションの記述です。 function thisPressed (mouseEvt:MouseEvent) { frameNum++; //frameNumはuint型 if (frameNum>2) { frameNum=1; //frameNumが2を超えたら1に戻る } trace ("属性= "+this.name+", "+frameNum); this.gotoAndStop (frameNum); //指定フレームに移動 } この場合、フレーム移動しないのもさることならがら、traceで得られるframeNumが本来 1→2→1→2→・・・ となるべきものが同じ円形MCをクリックし続けても2のままです。 (属性のthis.nameは正しく得られています) 考えられる原因は何でしょうか?
>>633 thisって一体何?
そのスクリプトだけだとムービークリップの参照ができてないと思うんだけど
frameNumの処理は正しいからちゃんと1→2→1→2って動いたよ
問題はそこ以外が絡んでる気がする
>>625 おれ、AS3からの新参者なんだけど、enterFrameとかマウス/キーイベントとか、
DisplayObject関係のイベントって、removeChildされてStage上から外れたら、
どうせイベント自体が届かなくなるからがんばってremoveEventListenerしなくても
GCまかせでいいやー、と思ってたんだけどちゃんと削除しとかないとマズイの?
ゴミがたまってメモリバカ喰いとかしてそのうち不安定になっちゃったりする?
>>635 オブジェクトを消すときには、
リスナーの除去、タイマーの停止、MCのプレイヘッドのstop()、消すオブジェクトを
参照しているオブジェクトのチェックの4つをしましょう
参照を失ったMCでもstop()してないとGCされるまでプレイヘッドは動き続けます
幽霊がCPUパワーを奪っているわけですな
637 :
Now_loading...774KB :2008/12/09(火) 20:51:48 ID:hi6RrxKI
acs2です。 呼び出し元にイベント通知をしたいんですが、うまく動きません。 何か勘違いしていますでしょうか。。?よろしくお願いします。 1フレーム目のスクリプトで以下の様に書いております。 ------------------------------ import mx.events.EventDispatcher; mx.events.EventDispatcher.initialize(this); addEventListener("onCompleteShow2", this); this.onCompleteShow2 = function() { trace("fugafuga"); } myclass = new myclass(); myclass.kick(); //これを実行したらonCompleteShow2が実行されてほしい。 ------------------------------ 続く
638 :
637 :2008/12/09(火) 20:52:27 ID:hi6RrxKI
続き。 ■myclassの中身。 ------------------------------ import mx.events.EventDispatcher; class myclass extends mx.events.EventDispatcher { function myclass() { ; } function kick() { // _rootのonCompleteShow2()を起動したい。 dispatchEvent({ type:"onCompleteShow2", target:_root}); } } ------------------------------
639 :
637 :2008/12/09(火) 21:26:57 ID:hi6RrxKI
>>637 this.onCompleteShow2 = function()
を
function onCompleteShow2()
としてもだめでした。
640 :
637 :2008/12/09(火) 21:30:47 ID:hi6RrxKI
ごめ〜ん。解決した。 myclassで addEventListener("onCompleteShow2", _root); をやらなきゃいけなかったぽい。 myclassからみたらonCompleteShow2がどこにあるかわからない訳ね。 了解です。
AC2で書いています。 連続で座標を取得していき、前の点と次の点が近かったら点を大きく、 離れていたら点を小さくするというのは、どうやって書いたら良いのでしょうか。 距離を足したら大きくなりますし、引いても上手くいきません。 どなたか宜しくお願いします。
>>636 レスさんくす。
MovieClipを使わない静的?なアプリケーションだったら気にせんでもいい?
フォーム入力みたいに基本的に動きがなくてユーザ操作で駆動するようなアプリ。
タイマーにaddして放置したらヤバイのは分かるので不要になったらremoveはしてる。
てか、タイムラインとかいまいち分かってなくてMovieClipやSceneを全く使ったことないww
今までJavaアプリ、DHTMLなWebアプリ畑を耕してたんだけど、Flashの感覚になじめてないw
>>641 近かったら点を小さく、遠かったら点を大きく、は出来るの?
出来るなら最大半径mrから距離dを引いた値を点の大きさrとして、r<1ならr=1になおすとかやればいいんでない
距離は√(x2-x1)^2 + (y2-y1)^2で求めてもいいし、専用の関数(AS2であったっけ?)を使ってもいい
>>643 即レス感謝です!
さっそくやってみます!
>>641 2つ変数を用意。例えば、oldDist, newDist とか。
oldDist > newDist → MCのスケール小
oldDist < newDist → MCのスケール大
そしてフレーム毎に oldDist = newDist;
では?
646 :
Now_loading...774KB :2008/12/09(火) 22:53:05 ID:5Kv1Upds
WinXP-ProでFlash-CS3-Proを使っています。ASは3.0です。 CS3(AS3.0)でオブジェクトのパスを参照するにはどうしたら良いでしょうか? Flash8以前(AS2.0以前)なら、例えばroot上に置いたインスタンス名mcAというMCに on (release) { trace("this= "+this); } と書けば、単純に this= _level0.mcA が得られパスが参照できましたが、AS3.0では 調べてもやり方が分かりません。 よろしく願います。
647 :
633 :2008/12/10(水) 00:12:11 ID:ZZ+V2imz
>>634 レス有難うございます。
thisは円形MC(pathMC0〜pathMC5)のことで、traceでは 属性= pathMC0, 2
などと表示されます。つまり、MCの識別は出来ているようです。
試しに、
@ MouseEvent.MOUSE_DOWN → MouseEvent.CLICK
A MouseEvent.MOUSE_DOWN → MouseEvent.MOUSE_OVER
としたところ、@のクリックではtraceさえ現れず、Aのロールオーバーでは
一瞬2フレ目に移行しても(gotoAndStopを書いていても)直ぐに1フレ目に戻ります。
現時点で分かっているのは、
1) MOUSE_DOWNとCLICKでは2フレに移行できない
2) MOUSE_OVERでは移行できるが、gotoAndStopは無効
です。 イベントフローのuseCapture:Boolean を使って調べようと思いましたが、
この使い方がよく分かりません。
う〜ん、なんでやねんw
648 :
Now_loading...774KB :2008/12/10(水) 00:30:18 ID:jUseOv/S
すいません助けてください。 AS3.0ですが _rootにcreateEmptyMovieClipを作って その上にforで回しながらattachMovieでムービークリップを設置してます。 その設置したムービークリップの中にあるムービークリップに画像を読み込ませたいのですがうまくいきません。。お助けください。 _root._mc = this.createEmptyMovieClip("_root", 0); for (i = 0; i < 10; i++){ var _loc2 = _root._mc.attachMovie("box_b", "box_" + i + "_mc", i); ここでbox_b内のムービークリップimggに画像読み込ませるスクリプトが思い浮かびません。。 } box_b詳細 「 _root ーーーー¬ | 「 imgg ¬ | | |ここに | | | 論______」 | | | 論________________」
649 :
Now_loading...774KB :2008/12/10(水) 00:35:22 ID:djHvpi7u
650 :
Now_loading...774KB :2008/12/10(水) 00:48:19 ID:EptZN1cW
651 :
Now_loading...774KB :2008/12/10(水) 00:50:52 ID:44yRIswE
652 :
Now_loading...774KB :2008/12/10(水) 00:51:43 ID:jUseOv/S
648です。 AS2かどうかもわかっていませんでした。。お恥ずかしいです。
>>652 その場合のスクリプトって思い浮かぶ物じゃないだろ。
知ってるか知ってないか、でしかない。
AS2なら画像読み込みにはMovieClipLoader使え。
使い方はヘルプとか見れば書いてあるよ。
もっともAS2か3かの区別もつかないほど知識がないなら
もっと基礎的な本かサイトで勉強してからにしたほうが
いいんじゃないのか?
654 :
Now_loading...774KB :2008/12/10(水) 01:08:04 ID:44yRIswE
>>653 ごもっとも!
しかし今すぐに実装したいならぐぐればすぐ出るだろうね!
がんばれ!
655 :
Now_loading...774KB :2008/12/10(水) 01:21:33 ID:EptZN1cW
AS3のFLVプレイヤーを作っていて、ローカルでテストしています。 function testInit():void{ ns.play(url); ns.pause(); ns.seek(0); } としておいて、 ns.togglePause(); を実行すると正常に再生されます。 が、このns.togglePause()より前に、 ns.seek(10)をするとシークされpause状態になりますが、 その後ns.togglePause()を行っても正常に再生されません。 NetStatusEventのinfo.codeを見てみると NetStream.Buffer.Empty NetStream.Buffer.Full を延々と繰り返します。 ns.bufferTimeを指定すると画像は動きますが音声がでません。 しかも、やはりNetStream.Buffer.EmptyとNetStream.Buffer.Fullを繰り返します。 どなたかこの現象が分かる方はいらっしゃいますでしょうか・・・。
656 :
Now_loading...774KB :2008/12/10(水) 03:29:07 ID:EptZN1cW
自己レスです。 どうやら0-bufferTimeを超えるシークを行った時に起こるようです。。。 自分の頭ではbufferTimeをdurationに設定するくらいしか思いつかなかったんですが、 いい方法とはいえないので、何か他に解決方法が無いでしょうかorz
AS3 CS3を使用してます 1フレームで色々と作業させているのですが間違った時にボタンを表示させてそれを押すと まっさらにして頭からやり直しもしくは、再読込させるブラウザの更新ボタンの様な方法がありましたら教えて下さい。
javascript呼び出してlocation.reload()すればいいんじゃね
659 :
Now_loading...774KB :2008/12/10(水) 14:48:33 ID:dyUV6jUM
stageWidth : ステージの現在の幅。 でなく、 width : 表示オブジェクトの幅。 でもなく、 Flashコンテンツを作ったときに指定した幅 (ドキュメントプロパティで設定した幅) って取得できない?
FLASH lite1.1でperlと連動させようと思っているのですが ボタンに on (press) { loadVariables("url.cgi", "/mc1", "GET"); } ルートのmc1の1フレーム目に t_mode=10; perl側で &ReadParse(*in); $hoge=$in{'t_mode'}; と書いてるのですがどうもperlがt_mode=10を受け取ってくれません。 perlからswfにデータを返すことはできたのですが。 cgiにデータを渡したいときはどうしたらいいのでしょうか?
AS3.0で、this.removeMovieClip();みたいな事をやるにはどうしたらいいんでしょうか といってもremoveChildで「自分自身」の存在を消せればいいのですが…… あらかじめタイムラインにremoveChildが書かれたMCをaddChildでおきまくって、彼らには自発的に消えてもらいたいのです。 removeChild(this)とかやると 「指定した DisplayObject は呼び出し元の子でなければなりません。」 とか怒られます
662 :
Now_loading...774KB :2008/12/10(水) 15:16:55 ID:dyUV6jUM
>>661 removeChild( this )じゃなくて
parent.removeChild(this)だべさ
663 :
660 :2008/12/10(水) 17:29:41 ID:satIw+W/
ボタンを on (press) { tellTarget ("/mc1") { loadVariables("url.cgi", "/mc1", "GET"); } } にしたら解決しました。 お騒がせしました。
as2で言う、duplicateMovieClipのような事って、 as3だとどうやるんでしょうか? bitmapDataなら、コピーする関数は用意されているのですが、 movieClipをコピーするのは無いような・・
flashdevelopってfl.transition使えないのかな?
666 :
646 :2008/12/10(水) 20:10:13 ID:BcDJ9MQu
(パス参照の件)
色々調べたところ、下記のサイトが手掛かりになりました。
ttp://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=7460&forum=20 この記述を元に下の関数をメインタイムライン1に置いてみたところ、MCのパスは得られました。
function func_RootToObj (eyedObj:DisplayObject) { // RootTL1.func_RootToObj(調べたいMC);
var pathStr:String = eyedObj.name;
var parentObject:DisplayObject = eyedObj.parent;
while (parentObject != eyedObj.root) {
pathStr = parentObject.name + "." + pathStr; //パス文字列の生成
parentObject = parentObject.parent;
}
trace ("RootPATH: root."+pathStr); // RootPATH: root.〜 で出力
}
しかし、この方法ではライブラリのMC内で定義したGraphicsオブジェクトのパス(とりわけ、addChildした
MC内のGraphicsオブジェクトのパス)を調べることができません。
引数の eyedObj:DisplayObject を変えたりして試しましたが、どうしてもGraphicsオブジェクトのパスが
参照できず困っています。
是非、アドバイスを願います。
>>666 Graphics そのもののパスを取得するなんて出来ないんじゃないの
DisplayObjectを継承してないし parentプロパティもないし
>>665 FlashCS3があれば使える
>>666 ムービークリップが取得できたなら、それのgraphicsプロパティかあらアクセスすりゃいいんじゃね?
>>662 返事遅くなって申し訳ない
出来た!本当にありがとう!
670 :
Now_loading...774KB :2008/12/10(水) 22:04:21 ID:dyUV6jUM
>>667-668 レス有難うございます。オブジェクトが既にステージ上にある場合、パス自体は指定出来ます。
実際、 var RootTL1:MovieClip=root as MovieClip; として、予めステージ上にMCのsubStageM
を置き、この中で var GrObj:Graphics = graphics; と定義すると、円を描く場合は
RootTL1.subStageM.GrObj.drawCircle() でOKです。
ただし上でも書いていますが、addChild用MC内にgr1としてaddChildすると、このgr1がnull扱い
になります。
つまり、addChildしたオブジェクトでは描画が出来ない状態です。
668さんの方法では、どういう記述になるのでしょうか?確かにaddChildしたMCへのパスは
取得出来ましたが、「graphicsプロパティからアクセス」が分かりません。
よろしく願います。
>>672 なんか根本的な認識が違う気がする。
Stageの上に子MCを配置、子MCにさらに孫MCを配置、、、といったカタチにするよね。
StageやMovieClip, SpriteなどはみんなDisplayObjectの仲間で、Stageを最上位とした
DisplayObjectの入れ子というかディレクトリツリーのような構造になるよな。
しかし、GraphicsオブジェクトはDisplayObjectの仲間ではないのでMCの子供とはいわない。
MCのxy座標やサイズ、背景なんかとなんらかわらない単なるプロパティの一つと考えるべきだ。
つまりDisplayObjectツリー構造における「パス表現」の中にGraphicsオブジェクトが出てくること
自体が不自然なこと。
パス表現から該当するMCを取得する関数getMovieClipByPath()があったとしたら、そのMCのもつ
Graphicsオブジェクトにアクセスして描画するには↓のようになるんじゃないかな。
var mc:MovieClip = getMovieClipByPath("root.mc1.mc2.mc3");
var g:Graphics = mc.graphics;
g.beginFill(0xCDCDCD);
...
でも、わざわざパスからMCを取得してGraphicsにアクセスするくらいなら、上の例ならmc3に
いきなり直接スクリプト書いたほうがラクでねーの?
mc3内のスクリプトなら、var g:Graphics = this.graphics; なわけだし。
>>673 レス有難うございます。
そうですね。このGraphicsオブジェクトの扱いに関しては、書かれているようにmc3で
制御した方が早いですね。
AC2です、簡単なはずのifがよくわからなくなりました。 もしかしたら自分の勘違いかもしれませんが…宜しくお願いします。 変数countを毎フレーム1づつ上げて行って、countが100超えたら フレーム2に移動するというのを書きたいのです。 なら、条件文は「countが100以上」だから count >= 100; でいいんですよね…? でも、 var count = 0; this.onEnterFrame = function(){ if(count <= 100){ gotoAndPlay(2); } this.count++; } こう書かないと動かないんです…。 countが加算されていないのかと思ったんですが、そんなこともないので 不思議で仕方ありません。 考えられる原因はなんでしょうか、宜しくお願いします。
移動したけどstop()がないからループしてるとか
>>677 レス有り難う御座います。
フレーム1にはstop()かけてあります。
フレーム2にも必要…ですか?
分かってんのか分かってないのか知らんが
>>674 の微妙な上から目線に驚いた朝
680 :
Now_loading...774KB :2008/12/11(木) 11:12:04 ID:uHEfl8yM
>>678 とりあえずgotoAndStop(2)でやってみようYO!
>>680 やってみましたYO!
でも変わらずじまいです…、条件文おかしいですよね?
でも逆にすれば一応動作するので…いいかなと思っていますが
私が間違っているのでしょうか…うーん…
レス有り難う御座いました
as3です。 大きな画像をグンと動かす際に、どうしてもカクついてしまいます。 動かすときだけ画像の品質を非常に下げたいのですが、 下げるパラメータというのは存在するのでしょうか?、
AS2で、外部テキストから変数を読み込む動作について質問です。 config.txt コメント:これは変数1です。 hensu1=abc このような外部テキストを作った際に、コメント部分をコメントアウトして 変数部分のみ読み込ませることはできますか?
684 :
Now_loading...774KB :2008/12/11(木) 14:24:06 ID:uHEfl8yM
>>681 flaどっかにあげてチョ
気になって夜も眠れない
685 :
Now_loading...774KB :2008/12/11(木) 14:30:03 ID:uHEfl8yM
>>682 どんだけデカイんだ?w
エフェクトとかシェイプはまったく使ってないの?
ん〜どうしようかね
BitmapDataクラス低解像度な入れ物を作って元の画像を描画。
動かす瞬間に低解像度の画像に差し替えるとか?
画像を動かす際、どうやって動かすかによって重さは変わってくるよ
たとえばX、Y座標の移動ならサクサク動くけれど
デカイ画像を回転させたりしたらまた重くなるだろうとおもう。
デカイ画像を縮小表示させてる状態でX,Y軸の移動を行うんだったら
ビットマップキャッシュを使うと幸せになれるかも
flvコンポーネントを使って、動画をストリーミングして、再生するシステムを作ったんだけど、 WEBに上げたら凄い重い。んで、よくよく見てみるとmovie.flaのサイズが500M近く。 flvコンポーネントってそんなに重いの・・・?解決方法ってあるかな?
687 :
Now_loading...774KB :2008/12/11(木) 14:33:32 ID:uHEfl8yM
>>683 外部テキストを読み込んだあとすぐに
正規表現かなんかつかってコメントを削除すればいいと思われ。
ってAS2は正規表現つかえないんだっけか…
まぁ読み込んだテキストを使う前にコメント部分を省けば解決!
688 :
Now_loading...774KB :2008/12/11(木) 14:34:56 ID:uHEfl8yM
689 :
Now_loading...774KB :2008/12/11(木) 16:12:17 ID:hGYMRJOL
AS3で import flash.display.*; とアスタリスクで纏めてインポートするのと import flash.display.Sprite; と使うものだけ個別にインポートするのでflash動作が軽くなるとか影響はあるのですか?
>>686 本当にストリーミングorプログレDLなのか?
動画をファイルに埋め込んでないか?
>>688 解像度は限界まで落としてます。ってか、それにしても多すぎる気が。。。
>>686 ストリーミングです。それは間違い無いです。動画自体も20M程度ですし。
まったくの謎なんすよね。。
692 :
Now_loading...774KB :2008/12/11(木) 17:18:09 ID:uHEfl8yM
>>691 リセットして手順を追って初めから作り直してみるといい!
ファイルをあげてもらわないと俺たちは何もできないよん
693 :
Now_loading...774KB :2008/12/11(木) 18:01:28 ID:b/mFaEPr
AS2でローカルでは動いているのですが鯖に乗せると動かなくて。。 やってるのはテキストファイルをloadしてそのデータをまわしています。 ロードができていないのかな?
バイナリモードで送ってんじゃないの ローカルで動いてるならスレチ
>>693 ロードに失敗しているのか、ロード完了を待ってないのか、まずはそこから。
696 :
Now_loading...774KB :2008/12/11(木) 18:23:04 ID:b/mFaEPr
swfファイルはバイナリで送って確認ましたしたが一緒でした。。 ロードはMyVars = new LoadVars(); MyVars.load("sample.txt"); MyVars.onData = function (csv){ としてます。
・テキストファイルの上げ忘れ ・テキストファイルのパスと実際にある場所が違う こんなとこじゃね?
AS2の_root.hogeと同じ感覚で MovieClip(root).hogeとか使ってるんだけどまずいかな 今のところ問題なさそうなんだけど
>>699 thisがBitmapだったり、newしただけでaddChild()する前のSpriteだったりした場合はrootがMovieClipじゃない
こともあるけど、rootがMovieClipであることが確実に分かっている状況ならいいんじゃね?
詳しくはリファレンスのDisplayObjectのrootプロパティんとこを見るべし。
ムービークリップにAS付けて、レイヤーパレット上では表示に設定してても なんかパブリッシュ設定で非表示レイヤのチェックオフにしたらAS無効になった うまく説明できてるかわかんないし間違えてるかもしれないけど わかるかたいます? オンにしてパブリッシュしたら動いたから結果としては助かったんだけど なんでだろうと...
>>700 ありがとん 特殊な状況だと使えないのね
ちょっと勉強してみます
703 :
Now_loading...774KB :2008/12/12(金) 11:09:43 ID:uDLvnotn
>>689 FlashDevelopで開発している身としては
.*でインポートすると余計なものがリストアップされるので
個人的に.*は使わなくなったッス
704 :
Now_loading...774KB :2008/12/12(金) 18:42:04 ID:uDLvnotn
数字を4桁とかで文字列に変換するにはどうするぽ?
PNGを動的に読み込みたい時はどうするのが良いですか???
>>704 var num:Number = 1;
("0000" + num).substr(-4);
とかいうことかな?
>>705 as2.0ならloadMovieで、as3.0ならLoader.loadじゃね?
707 :
Now_loading...774KB :2008/12/12(金) 19:19:21 ID:uDLvnotn
>>705 var loader:Loader = new Loader( new URLRequest("unko.png") );
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, Complete );
function Complete( e:Event ):void{
loader.content; //←これがpng
}
確認しないで打ったから間違ってるかも
708 :
Now_loading...774KB :2008/12/12(金) 19:25:05 ID:uDLvnotn
文字列として0000を足さないで、数として10000を足してから文字列として一文字目消すのもアリ
>>706-707 ありがとうございます
試しにやってみましたが、
loader.contentLoaderInfo ←コレがなぜか自分の環境では見当たりませんでした
他のサイトとも見比べてみましたが綴りに間違いはないようです
環境はFlexSDK3 AS3.0 で、IDEにFlashDevelopを使用しています
711 :
710 :2008/12/12(金) 20:24:06 ID:AxWqkVkL
あーーーーーーー出来ました! URLLoaderとLoaderを間違えて使ってた様子 本当に助かりました
Flash8 AS2 Menuコンポーネントの使い方が載ってるサイトが無くて困ってます。 Menuをステージに配置するとどんな意味があるのでしょうか?使い方がよくわかりません。
XML弄るんじゃなかったかな ライブドックに使い方載ってると思うよ
714 :
Now_loading...774KB :2008/12/12(金) 23:55:43 ID:FyBOBGlH
質問です! 音にあわせたて動く波形的なものを作ろうとしているのですがやり方がどうすればいいのでしょうか? 3.0であれば実装できそうな方法を見つけたのですが、2.0に応用できそうにないです... どうか、ご教授お願いします。
as3でフレームアクションでグローバル変数を宣言しても、 他のパッケージのクラスのインスタンスから参照できません。なずですか?
>>714 AS3のコードをAS2でつかえねーどうにかしろってそりゃ無理だろw
>>715 参照できるけどなwまずおまいがどうやってるか書け
717 :
689 :2008/12/13(土) 02:51:28 ID:mS0N23wK
>>698 >>703 使っているのはCS3で、結局フラッシュの動作自体にも影響無いと聞いて安心しました
ありがとうございます
718 :
Now_loading...774KB :2008/12/13(土) 15:41:04 ID:zWVQWQo6
Windowsでflash8を使っています。 FLVコンポーネントを配置して動画を再生するわけですが、 動画が再生を終了したときに自動的に次の"フレーム"へ進んでくれるようにするにはどうすればいいのでしょうか? if文を使うのでしょうか?だとすれば、 if(再生を終えたらならば) {//←この()カッコ内になんと記述すれば良いのかわかりません gotoAndPlay(2); }; 果たして考え方自体が合っているのかもわからないですが、わかる方教えてもらえれば助かります。
>>718 listener:Object=new Object();
listener.イベントハンドラ名 = function(evt:Object):Void{
ここで処理する
}
FLVPlaybackインスタンス名.addEventListener("イベントハンドラ名",listener);
721 :
Now_loading...774KB :2008/12/14(日) 00:59:06 ID:cNG+AGB7
WinXP-Pro,FlashCS3-Pro(AS3.0)です。 ComboBox(プルダウンメニュー)での項目の追加方法が分かりません。 ステージ上のMCをクリックしたときにアイテム数を追加するように下記のAS を実行したところ、 ReferenceError: Error #1069: String にプロパティ data が見つからず、デフォルト値もありません。 と出ます。 function mcClick (evt:MouseEvent):void { this.cBox.labelField="data"+num; this.cBox.addItemAt ("str"+num, num); trace ("リストの個数= "+this.cBox.length); num++; } ComboBoxには最初何も無く、単純に各インデックスに文字列str0, str1, ・・・ を入れるだけです。 どうしたら良いでしょうか? なお、手元の本もWebも殆どがAS2.0以前用で、AS3.0でのサンプルが見つかりませんでした。
722 :
Now_loading...774KB :2008/12/14(日) 01:17:36 ID:DMcymhYh
>>719-720 大変ありがとうございます。お蔭様で動かす事が出来ました。
わざわざ解説まで付けていただいてご親切にありがとうございました。
725 :
721 :2008/12/14(日) 04:03:17 ID:cNG+AGB7
(連投スイマセン)
>>723 下記の記述で出来ました。nameTで任意のラベル名を指定することが出来ました。
function mcClick (mouseEvt:MouseEvent) {
num++;
this.cBox.addItemAt ( { label:this.nameT.text+num, data:num }, num);
trace ("個数= "+this.cBox.length);
}
関連してもう1つ質問なのですが、ラベルのフォントサイズは setStyle() で設定できないの
でしょうか?ヘルプを見ると、「ComboBox でのスタイルの使用」(AS3.0)のところにsetStyle()
の使用法が書いてあり、
this.cBox.setSize(100, 22);
this.cBox.setStyle("fontSize", 16);
とすると、ComboBoxのサイズはsetSizeで変更できますが、フォントサイズの変更はできません。
どうすべきでしょうか?
726 :
723 :2008/12/14(日) 07:59:10 ID:l4nU5Usv
727 :
Now_loading...774KB :2008/12/14(日) 10:03:49 ID:tVw7pewd
728 :
Now_loading...774KB :2008/12/14(日) 12:13:07 ID:xVv/fsJ/
729 :
Now_loading...774KB :2008/12/14(日) 12:18:12 ID:tbaAKg/i
AS3なのですが 紹介されているソースで、処理をさせる自作クラスにターゲットのSpriteをコンストラクタの引数に渡す時 受け取り側の変数がSprite型じゃなくて、DisplayObjectContainerで受け取ってたりするのは大きな意味があるのでしょうか?
730 :
Now_loading...774KB :2008/12/14(日) 12:22:21 ID:xVv/fsJ/
>>729 多分、DisplayObjectContainerで受け取ることで
DisplayObjectContainerを継承しているSprite以外のクラスのインスタンスも
渡せるようになるので便利!って感じだと思う。
例えばMovieClipも渡せると。
731 :
Now_loading...774KB :2008/12/14(日) 12:30:23 ID:tVw7pewd
>>728 サンクス
我輩AS3なんですが、原理は一緒ですかねぇ?
やてみま〜す♪
732 :
Now_loading...774KB :2008/12/14(日) 13:20:07 ID:xVv/fsJ/
>>731 おんなじだよん♪
mouseXにするだけ
733 :
725 :2008/12/14(日) 14:29:02 ID:Oxt31tnR
>>726 有難うございます。
早速、Bookmarkしました。
>>730 渡すオブジェクトの多様対応だったんですね
勉強になりました、ありがとうございました
735 :
725 :2008/12/14(日) 16:01:42 ID:Oxt31tnR
736 :
723 :2008/12/14(日) 16:53:42 ID:l4nU5Usv
>>735 >1118: 静的型 Object の値が、関連しない可能性が高い型 flash.text:TextFormat に暗黙で型変換されています。
あー、すまん。キャストが必要だった。var tf:TextFormat = TextFormat(getStyle("textFormat")); か。
>今度は、サイズを50にしても変わりません。
ぐぬぬ、Buttonとかの例を見るとこれでいけそうなのにな。ComboBoxにはひとひねり必要なのかな。
ComboBoxのプロパティを見たら、入力部分はTextInput, ドロップダウン部分はListからできてるね。
これらに直接setStyleしてみたらどうだろうか。
実際試してからレスりたいところなんだがCSもってないので。。。うまくいかなかったらゴメンね。
cBox.dropdown.setStyle("textFormat", tf);
cBox.textField.setStyle("textFormat", tf);
editable=falseなら、textFieldの方はdisabledTextFormatかもしれないな。
737 :
Now_loading...774KB :2008/12/15(月) 02:12:14 ID:3Pi6Y63h
AS2.0以前とAS3.0の関係で質問(というか確認)です。 「フレーム毎の動作」はAS2.0以前では、定義を ABC.onEnterFrame = function(){ } と書いて、止めるとき(破棄するとき)は ABC.onEnterFrame = undefined; としていましたが、 AS3.0の場合これらに相当するのは、 ABC.addEventListener(Event.ENTER_FRAME, リスナー関数) ABC.removeEventListener(Event.ENTER_FRAME, リスナー関数) で良いのでしょうか? つまり、対応として ABC.onEnterFrame = function(){ } → ABC.addEventListener(Event.ENTER_FRAME, リスナー関数) ABC.onEnterFrame = undefined; → ABC.removeEventListener(Event.ENTER_FRAME, リスナー関数) は正しいのでしょうか?
>>736 うーん、やっぱり駄目です。import fl.core.*; しているのですが、前者・後者共に
var tf:TextFormat = TextFormat(getStyle("textFormat"));について
1180: 未定義である可能性が高いメソッド getStyle の呼び出しです。
が出ます。
現状では、CS3持ちの人の降臨を待ちます。
739 :
Now_loading...774KB :2008/12/15(月) 05:53:31 ID:BCdze/rZ
740 :
723 :2008/12/15(月) 06:33:17 ID:pB0VKBD9
>>738 ゴメン。cBoxが抜けてる。
var tf:TextFormat = TextFormat(cBox.getStyle("textFormat"));
でもgetStyle()してこなくても
>>735 のようにnewしても構わんと思うよ。
var tf:TextFormat = new TextFormat();
それにdropdownとtextFieldに直接setStyle()してもダメだったか。。。
えらそーにレスつけといて役に立たなくてスマンす。
>>739 ヒント: ステージ幅,オブジェクト(動く物体)の幅と座標。
742 :
Now_loading...774KB :2008/12/15(月) 07:56:21 ID:BCdze/rZ
>>741 ハ、ハバ!?
つまりそれは、
Stage幅が500pixel MC幅が20pixelとすると
if(mc.x>500)の時
新mc.x = mc.x - 500
if(mc.x<500)時
新mc.x = mc.x + 500
的な。。。あれれ??
全然分かりません泣泣
ま、マリオみたくあんな、体半分右端、もう半分左端
ってほどピッタリやなてもいいんですが。。
>>742 先ず単純に一方向に動かして、フレーム毎にtraceでX座標を把握しなはれ。
次いで適当なXでif文をかませる。とにかく、traceを多用する。
というか、動作を図に描くと良い。画面の中だけで考えると混乱するぞ。
flvplaybackコンポーネントを使って、動画共有サイトを作ったのですが、動画を切り替えると 動画によって画面の大きさが変わってしまいます。多分、コンポーネントの基準点が真ん中になっているのが 原因だと思うのですが、どうやったら基準点を変えられるでしょうか?
745 :
Now_loading...774KB :2008/12/15(月) 13:58:11 ID:c9/Zz7Dn
AS3で質問です。 package { public class DrawMyClass { var spriteArray:Array function DrawMyClass() { init() } public function init():void { spriteArray = new Array(); この後spriteArrayに代入&処理 } } } このDrawMyClassを親の方から何度も呼び出し、ソースのように処理の後始末に、 spriteArray = null して消さない場合、DrawMyClassを呼び出す度にArray(spriteArray)が作られ、 消えずにメモリに溜まり続ける事になるのでしょうか? Spriteとかnewで生成した物はnullで消す作業をしないとずっと残ると聞きましたが、Arrayもそうなのでしょうか?
746 :
Now_loading...774KB :2008/12/15(月) 14:09:36 ID:+CEzAfDW
CS3 + FlashDevelop + AS3でシューティングゲームを作ってます。 FlashCS3で弾の絵を描いてbullet.swfで書き出して置いておく ゲームのプログラムでLoaderを使いbullet.swfを読み込み キーが押されたら読み込まれたbullet.swfが自機から打ち出される というプログラムを組んだのですが 弾を2発打つと一発目の弾が消えてしまいます。 理由は、bullet.swfを一つしか読み込んで無く 複数のMovieClipからMovieClipにインスタンス化されたbullet.swfを参照したからだと思うのですが MovieClipインスタンスに描画されているベクトルデータを複製することってできますか? ちなみにMovieClipインスタンスのgraphicsプロパティを他のMovieClipに代入したら 読み取り専用ですとか怒られました・・・><
747 :
Now_loading...774KB :2008/12/15(月) 15:09:53 ID:+CEzAfDW
弾を撃つたびに毎回bullet.swfをLoaderを使って読んで撃つような仕組みにしたら とりあえず直ったけれど、これって良くないよなぁ・・・。 ダウンロードしたファイルはキャッシュに残るからいいのかなコレでも。
そもそも何故そんな仕組みにしたんだ AS3はまだ触れ始めたばかりでよく分からんがその仕様のほうが処理早いのか?
750 :
Now_loading...774KB :2008/12/15(月) 15:32:18 ID:+CEzAfDW
751 :
Now_loading...774KB :2008/12/15(月) 15:35:29 ID:+CEzAfDW
>>748 FlashDevelopで開発しているから、ベクトルデータを外部ファイルとして
読み込みたかったんだYO!
そしたらFlashCS3が無い環境でも開発できるからさ
つかLoader優秀すぎ!
弾を撃つたびファイルロードしてるけど全然軽い!
でも一発目が重いから
ゲーム始まる前にLoader使って一度ロードすれば完璧だ!
Loader愛してる♪
752 :
Now_loading...774KB :2008/12/15(月) 22:03:08 ID:ezaAAAsc
AS3で質問です。 oya.clickArea.addEventListener(MouseEvent.CLICK, onOpen); private function onOpen(e:MouseEvent):void { //すでに子にオーバーしている状態で、 e.currentTarget.parent.mouseChildren = false;//すると、アウトが発生してしまう。 e.currentTarget.parent.addEventListener(MouseEvent.MOUSE_OUT, onClose); } private function onClose(e:MouseEvent):void { trace("なんでやねん"); } 子にオーバーしている状態で、親のmouseChildrenをfalseにするとMouseOutが発生してしまい困っています。 内包するMcをクリック > 親のマウスアウトを検知したいのですが、何かいい方法は内でしょうか。 どなたかお願いします(´;ω;`)
>>751 キャッシュが効くとはいえ、外部swfを毎回ロードってすごい荒業だなw
FlashDevelop(というかFlexSDK)からFlashCS3のライブラリのリンケージシンボルを読んだりできないの?
リンケージできれば本体に埋め込めるし毎度ロードしなくてもnewでインスタンス作りまくれるのにな。
なんかいい方法はないんかねぇ。
var hoge:MovieClip = new fugo(); addChild(hoge); hoge.x = 100; hoge.y = 50; 既に配置されているMC"test"のタイムラインで上記を実行すると、 出来るMC"hoge"を参照したい時はtext.hogeとしなければなりませんよね? そうでなく直接hogeと指定出来るようになりたい(ステージ上に置きたい(?))のですが、どのような書き方をすれば良いでしょうか。 addChildの前にstage.だとかparent.だとか置いてみましたが上手く行きません。 ご教示お願いします
755 :
753 :2008/12/16(火) 01:00:16 ID:iYmNiYSB
>>751 CS3から弾丸の絵(名前をBullet、クラスはMCかSpriteで)をswcで書き出して、
FlashDevelopではそのswcをインクルードしたら、new Dangan()でインスタンス作れたりしないのかね。
と、CS3を買おうか迷ってる貧乏人が興味津々なご様子。
>>754 numChildrenをtraceで出力して、そのMovieClip上に幾つインスタンスが登録されているか
を随時チェックして、ちゃんとaddChild出来てるかを確認していくといい。
多分、登録する前に参照しようとしてる、とかじゃないかと思える。
処理のタイミングは、stageのタイムライン→MovieClipのタイムラインのハズ
ちなみにparentがMovieClipなら、MovieClip(parent).addChild(hoge);
757 :
Now_loading...774KB :2008/12/16(火) 02:17:48 ID:+BWlhY5p
FlashCS3_proをWinXPで使っています。 AS編集時に上の「自動フォーマット」を押すと、付けていた () が消えてしまうことがあります。 例えば、 var ar1:Array=new Array(); → var ar1:Array=new Array ; 10 * (ab + xy); → 10 * ab + xy; のような感じです。 一応、アップデートして最新の状態にしているのですが、時々このような症状が出ます。なお、 FlashCS3を再起動すると直ります。 これって、バグですか?
758 :
Now_loading...774KB :2008/12/16(火) 03:54:35 ID:qCMMstiK
>>755 お、その発想は無かった!
swcで書き出しができるのならできるんじゃない?
ちょっと調べてみる!
759 :
Now_loading...774KB :2008/12/16(火) 04:08:14 ID:qCMMstiK
ん、待てよ・・・ その方法だと結局Embed使うのと同じか・・・
760 :
Now_loading...774KB :2008/12/16(火) 06:26:48 ID:ptTh9I6G
paraflaでムービークリップアクションとしてactionscriptを onClipEvent(enterFrame){ this.インスタンス名.width = インスタンス名.width * 119 / 120; } って書いたんですが,プレビューでまったく動いていません 打開策を教えてください
FlexSDK使いの貧乏なおれはswfの画像ファイルをEmbedでコンパイル時に 組み込んでSpriteオブジェクトを生成してます
ゲームの弾丸を毎回loadって、、、最低の設計だなw 弾を撃つたびにGC対象を作ってなんてw
763 :
753 :2008/12/16(火) 10:26:30 ID:iYmNiYSB
FlexオンリーならもちろんEmbedでサックリすますさ。
でもEmbedってCS3でもコンパイルできるんかいな?
FlexとCS3を両方使うとかチームで共同作業するときにCS3側でパブリッシュできなくなるんじゃつらいよ。
てか、
>>746 はそういう話なのかと思ってた。
常に最終的なswf生成をFlashDevの方でするんなら迷わずEmbedだな。
764 :
Now_loading...774KB :2008/12/16(火) 10:47:17 ID:qCMMstiK
>>563 うん、そういう話+ベクトルデータとゲーム本体を分離したいわけだわよ
ビットマップデータだと楽にできるのに(たぶん)
>>759 public interface Clonable { function clone():MovieClip }
を弾のswfで実装して、
loadしたswfのMovieClipをClonableでキャストして、
(もちろんメインムービーFlashDevelopの方にもClonableのソースは置いておいて)
MovieClip bullet = ((Clonable)swfmc).clone();
で弾の量産ができるような気がするから、試してみてよ!だめだったらごめん!
766 :
Now_loading...774KB :2008/12/16(火) 10:51:10 ID:qCMMstiK
だからEmbedもswcもダメぽ? いまんとこLoaderに頼るしかないかー 762氏の言葉が胸を痛めるぜw
767 :
Now_loading...774KB :2008/12/16(火) 10:53:26 ID:qCMMstiK
>>765 お、神コメの予感!
インターフェイス実装したことないからこの機会に
勉強がてら試してみる!Thx!!
768 :
765 :2008/12/16(火) 10:58:01 ID:M+QDOpFW
>>767 ごめん、一部Java文法で書いちゃった。適当にASに直してね!
769 :
Now_loading...774KB :2008/12/16(火) 11:02:27 ID:qCMMstiK
>>768 お、おう!
てか、
>>765 の方法で量産できたら
俺の目ん玉はすごい飛び出てしまうんだけど
どういうこと??勉強不足でよくわからんち・・・。
>>765 クローンの実装を毎回作るのもしんどくね?
import flash.utils.*;
function getClass(value:*):Class {
return getDefinitionByName(getQualifiedClassName(value)) as Class;
}
var Bullet:Class = getClass(読み込んだbullet.swfのMC);
とかやったらnew Bullet()しまくれないかな。
それなら最初にLoaderで読み込まんとダメなのは変わらんけど毎回ロードはしなくてすむ。
ダイナミックプロパティがあってクラスオブジェクトだけ取ってきてもダメかな。。。
CS3でAS3なんですが、 キーボードイベントでキーコードに応じた処理をする場合、 ネットで例を探すと、大抵 if (evt.keyCode == 65)とかいうように 数値をそのまま使ってるみたいなんですが、 const KEYCODE_A:uint = 65;というような定数定義をして、 if (evt.keyCode == KEYCODE_A) というようにするのはまずいんでしょうか?
>>771 個人的には後者のがいいと思うがね。
決めうちは後々面倒だし、キーカスタマイズさせられないし。
単に手っ取り早いとかサンプルまんまとかの理由で、変数を使ってないのではと推測。
夢見てるバカばっかだなこりゃw
774 :
771 :2008/12/16(火) 13:59:20 ID:5XRYrzEv
Flash8 AS2 _root.attachMovie("FLVPlayback","mc_flvplayer",this.getNextHighestDepth()); _root.mc_flvplayer._width = 400; _root.mc_flvplayer._height = 300; _root.mc_flvplayer.load("movie/movie01.flv"); FLVPlaybackコンポーネントでflv動画を読み込んでいるんですが、 もしflv動画のパスが間違っていた場合やダウンロード中にエラーが発生した場合の エラー処理の書き方を教えてください。
776 :
Now_loading...774KB :2008/12/17(水) 03:24:54 ID:GB5dfgzu
環境)OS:WinXP-Pro,ソフト:FlashCS3-Pro(Player9.0,AS3.0) AS3.0でComboBoxにあるリスト名を変更するにはどうしたら良いでしょうか? 例えばリストアイテムが計10個あり、インデックス番号5のリスト名 5banDesu を NasiDesu に 変えたく思っています。
関数hoge:intが1,2,3だったらtrueという条件式を作りたいのですが、正規表現等を使って短く書く方法は無いでしょうか。 if (hoge==1 || hoge==2 || hoge==3) { // } これでも望んだ効果は得られますが、長くなってしまうので if (hoge==/1|2|3/) { // } などと書きたいのです。ちなみに上記を試したら 「静的型intの値と、関連しない可能性が高い方RegExpの値とを比較しています。」 と怒られました
正規表現使えてなぜ比較演算子を知らない・・・
if((/1|2|3/).test(hoge.toString()))
>>781 これをやるなら俺はswitchか
>>799 の一番上を使う!
switch( hoge )
{
case 1:
case 2:
case 3:
〜
break;
}
783 :
Now_loading...774KB :2008/12/17(水) 14:00:41 ID:/FdEUKUb
ゲームを作っていて「→」を押しながら移動中に スペースでたま飛ばそうとすると 押しているにもかかわらず「→」での移動が止まってしまいます。 この辺のキー操作関連で詳しいWEBサイトとかありますでしょか 探してみたけど見つからないです。
784 :
783 :2008/12/17(水) 14:15:38 ID:/FdEUKUb
少し、スレ違いかもだったですね。 それらしい所見つけました 汚してすません。
>>784 せめてそれらしいところのリンク先キボンヌ
AS3.0で、 AとBのビットマップ画像を、ABという風に並んだ状態で一つのビットマップにすることってできますかね?
787 :
Now_loading...774KB :2008/12/17(水) 22:42:56 ID:fAWNBvzF
>>787 どんな感じに記述すればよろしいのでしょうか?
新しいBitmapDataにcopyPixels()でAとBを転写。
Flash8 AS2 ScrollPaneコンポーネント内に表示するものをユーザの選択によって切り替えなければなりません。 TextInputなどのコンポーネントを生成して、 そこに値を設定する処理がなぜ正常に行われないのかを考えたところ、 生成の命令を出してから実際にコンポが表示されるまでに遅延があるので すぐに値を代入しても受け付けないとわかりました。 具体的に生成方法は、ScrollPane.contentPathにリンケージ名(TextInput入りのMC)を使うのと、 数フレームあるMCをScrollPaneに入れてgotoAndStopしてみました。 コンポーネントを使わないという方法以外でこの問題を解消するにはどうしたらいいのでしょう? 乱文スマソ疲れてるみたいです
792 :
Now_loading...774KB :2008/12/18(木) 11:18:44 ID:cIq4peil
Suzuka, SWF6 で ActionScript を書き始めたのですが 基本的なところで躓いてしまいました。 変数の初期化をまとめて行うには どこが適切なのかわからないんです。 とりあえずボタンを一つ配置していますが ボタンが読み込まれた時に行う処理、 もしくはFlash自体が読み込まれた時に行う処理は どこに書けば良いのでしょうか?
793 :
Now_loading...774KB :2008/12/18(木) 12:56:03 ID:vstXzcPY
>>792 言ってることがよくわかんないけど
変数の初期化は変数を宣言したと同時にやるのが基本
クラスのプロパティであればコンストラクタで初期化
>>793 具体的に質問させていただくと、
on (release)
{
if (flag == true){
//ここに何か処理
flag = false;
} else {
//ここに何か処理
flag = true;
}
}
この時変数 flag を初期化するのはどこで行えば良いのでしょうか。
質問です。 on (release) { System.useCodepage = true; my_lv=new LoadVars(); my_lv.name1 = name1_txt.text; my_lv.send("aaaaa.cgi",my_lv, "POST"); _root.name2_txt.loadVariables("datasave.txt"); } で、cgiの方にデータを送り、datasave.txtにname1_txt内の文をコピーすると言う記述までは出来たのですが、このままだと別窓(ファイル名.cgi)が開いてしまうので解決策はないでしょうか? 別窓を開かずに、尚且つname1_txt内の文だけdatasave.txtに送る方法があれば教えていただきたいです。 ちなみにFlash MXを使ってます。
>>795 sendじゃなくてsendAndLoad
>>796 おお、確かに飛ばなくなりました!ありがとうございます…
後は画面の切り替えをせずにデータの送受信をする記述があればお願いします。
798 :
Now_loading...774KB :2008/12/18(木) 20:29:47 ID:vstXzcPY
if( object is Unko ){ } else if( object is Manko ){ } else if( object is Chinko ){ } って、Switchに出来ないよね??
799 :
Now_loading...774KB :2008/12/18(木) 20:31:03 ID:vstXzcPY
あ、ちなみにtoStringだとスーパークラスのときfalseになっちゃうからNG
>>798 出来ない。switchでの比較は===しかない。
isじゃなくてinstanceofだよな。
>>800 instanceofはprototype継承を調べる演算子でインタフェースはチェックできない。
JavaScriptでは活躍するけどAS3ではほとんど使わん。AS3ではisでいいだろ。
802 :
Now_loading...774KB :2008/12/19(金) 00:57:11 ID:B0tT9/KP
http://www.uniqlo.co.uk/ 海外のユニクロサイトのトップにあるようなFLASHを作りたいのですが
どのようなフレームワークが必要かわかりますでしょうか。
(SWF内でクリックした場所を中心にしてタイル状に画像が沈んでから、外側へ新しい画像に変わるもの)
ちなみにFLASHのタイムラインに画像を配置するやりかたではなく
ActionScript3のみを使用しての実現方法です。
いろいろと調べてみたのですが
・Tweener
・papervision3d
・scaena
・polygeek?
のここらへんを使えば実現できそうな気はするのですが
いまいち実現方法を見出すことができません。
他に必要(これを使うべき)というものはありますか?
またサンプルがあるサイトがございましたらアドバイスをお願いできますでしょうか。
当方の環境 VISTA+AS3+FLASH CS3 です。
よろしくお願いします。
_root上に置いた siID = setInterval(function () { this.gotoAndStop(_currentframe +1); }, 2000, this); を色んなMCから呼び出して、その呼び出したMCに this.gotoAndStop(_currentframe +1)を適用するには どう書いたらいいでしょうか? function.apply(this)でできそうな気がするのですが 色々試したのですができません
AS2で質問です。flvplaybackコンポーネントを使って、動画共有サイトを作ってみました。 で、キューポイントを使ってコメントを投稿・表示出来るようにして、コメントが来た時は一時停止 するようにしたのですが、投稿した時間と、表示される時間が若干ずれる事があります。それで、 停止する前にスロー再生すればズレは多少無くなるかな、と思ったのですが、スロー再生の仕方はどうやるのでしょうか? もしくは、この問題を解決する方法は他にあるでしょうか?どなたか詳しい方がいらっしゃったら教えてください。お願いします。
AS3で、全てのEventListenerをいっぺんに無効にするようなことは出来ますか? やはりポーズ画面などを作るには個々に細工しなきゃいけないんでしょうか
>>806 出来ない。ポーズは設計段階で盛り込まない限りそんなに簡単には作れない。
リスナ全部を無効にしたところでポーズ解除は誰が受け付けるんだ。
そ、そうですよね 序盤のうちに色々仕込んで何とかしてみます 全部一本に纏めればポーズとかも楽になるのかな
Flash CS3で作っているのですが、何故か動的(?)に配置したMCのアニメーション速度が二分の一になってしまいます 原因が分かる方はおりますでしょうか
>>809 どこかの処理が絡んでるんじゃないのかね。
問題が再現する最小の環境を作って
何が原因だったかを絞っていくのがバグ取りの正攻法
どなたか805お願いします……
スロー再生できないよ。できても問題の解決手段になるのかな? cuePointイベントってFLVがキューポイントに到達したか経過した時に発行されるイベントみたいだね つまりコメントは最大でFLVのキューポイント間隔分の誤差が生じるわけだ onEnterFrameで再生時間を監視するように仕様変更してみたら?
>>804 function waitAndGotoAndStop(mc:MovieClip) {
siID = setInterval(function () { mc.gotoAndStop(mc._currentframe + 1); }, 2000);
}
をいろんなMCから呼ぶんじゃだめかい?
>>812 と言う事はシステムの処理速度にも依存する訳ですね……
onEnterFrameで再生時間を監視するってどういう事でしょうか?監視して、どうするのですか?
漠然としてて少し意味が解りませんでした。申し訳ありませんが、もう少し詳しくお聞かせ頂けますか?
AS3.0でのことなんですが、 flashVarsでFlashにアドレスを渡して、そのアドレスの先のXMLを読みにいく。 という処理をさせているんですが、 IEとSafariでは問題なく動くんですが、なぜかFirefoxだと不安定なんです。 体感的にはほとんど読めなくてたまに読める感じです。 Firefoxの場合なにか記述を変える必要があるのでしょうか。 ご存知の方がいましたらよろしくお願いします。
>>816 問題はflashVarsの値が参照できないということ?
それともXMLを読み込めないということ?
あるいは、XMLの読み込みが終わっていないのに内容を参照しようとしてるということ?
>>817 おお・・・
そうですね、その検証が済んでいませんでした。
重要な観点ですよね。
ありがとうございます。
819 :
804 :2008/12/21(日) 16:51:40 ID:T/DXlL9L
>>813 できました・・!!!
ありがとうございますありがとうございます(;ω;)
820 :
Now_loading...774KB :2008/12/21(日) 21:29:11 ID:iBKRUeIF
AS3の事です。 配列って中身によって処理付加も違うんでしょうか? array1[0] = n1; int変数 array2[0] = n2; Number変数 array3[0] = container Spriteインスタンス この3つの配列の内一つの配列が存在した場合 array3 > array2 > array1 の順に配列自体の処理負担がある・・・なんて事ありますか? あとjavascriptですがint型変数が4バイトというのもどこかで見たことがありましたが AS3でこのような変数や中身の入った配列自体のバイト容量を調べる方法ってありますか?
>>820 性能を気にするなら測定すべし。しかし本当に気にする必要があるかを先に考えるべきだ。
AS3のintは32ビット(4バイト)整数であることは決まっている。
が、intの変数を1つ用意すると4バイトより多くメモリを消費する(型情報とかいろいろ)かもしれない。
配列自体やその各要素がどれだけメモリを消費するかは仕様で決まってないし調べる方法もない。
(Math.random() * 20) / 20 と Math.random() って何か違いがあるんですか? 他の人が書いたコードの中にあったんですが。
微妙に違う。*20した段階で入りきらない桁が削られる けど普通に使うなら大して違いはない Math.floor(Math.random()*20) / 20だったら大分違う
824 :
820 :2008/12/22(月) 10:16:28 ID:9f9cjPTZ
>>821 レスありがとうございました。
要素自体を調べる方法は無いんですね・・・。
特に疑問なのですが、asファイルで書いた場合の別々のfunctionの受け渡し方で、
public function a():void {
ローカルなSpriteを大量生成
用途別にnameを付ける
arrayにSpriteのnameを入れる ★
}
public function b():void {
arrayに入ったnameを元にgetChildByNameでSpriteを呼び出し
Spriteに処理
}
この場合arrayの中身はStringですが
ふと、★の所でarrayにSpriteインスタンスを直に入れた方が便利なのでは?と思ったのですが、
arrayに大量にString入れるのとSprite入れるのとでは、Sprite入れた方が処理負荷が高くはならないんでしょうか?
totalMemoryを使ってみましたが全体処理の数値?が出てしまい具体的にはわかりませんでした。
この配列の中身による処理負荷違いがあるのかどうか知っていましたら教えて下さい。
getChildByNameのコストが大きいでしょ 本来なら配列にSpriteの参照を格納して、インデックスで アクセスすればいいわけだし どうしても名前付けてアクセス汁ってならしょうがないけど
>>825 レスありがとうございます。
getChildByNameって重かったんですか・・・Sprite自体をarrayに入れておくよりarrayにnameのString入れてByNameで呼んだ方が
負荷が少ないと勝手に思い込んでずっとやっていました。勉強になりました・・・。
このgetChildByNameが重いというのは、その情報が何かに書いてあるとかじゃなく、
やっぱり自分でテスト環境作って調べて見る他無いんでしょうかね。
827 :
Now_loading...774KB :2008/12/22(月) 14:20:51 ID:w+4fMX+W
>>826 それくらいは常識的に考えればわかる範囲。単純に勉強不足では?
> Sprite自体をarrayに入れておくよりarrayにnameのString入れてByNameで呼んだ方が負荷が少ないと勝手に思い込んでずっとやっていました。
参照って理解してる?
array[0] = spriteObject; //spriteObjectへの参照が格納される。spriteObjectのデータがコピーされて配列に格納されるわけではない。
全然重くない処理です。
getChildByNameについてはリファレンスに
> getChildByName() メソッドでは子にアクセスするためにリンクされたリストを移動する必要があります。
と書いてあるので、処理がそれなりに重いとわかる。(連想配列じゃないのねー)
すいません。上記の記事かいたものですけど、上記のスクリプトでjsファイルも定義済みなのですが、動きません。 どうぞ宜しくお願いいたします。
FLASH CS3 AS2.0です。 外部JPEGをロードして、その画像の縦横サイズを取得し、 横幅分、X軸上に移動するとしたいのですが、できますでしょうか。
832 :
822 :2008/12/22(月) 21:41:50 ID:1mBETYce
>823 なるほど。 ありがとうございました。
CS3、AS3.0です。 処理中のイベントや、既に発生している他のイベントの処理を済ませてから処理されるように イベントを送出することってできますか? WindowsのPostMessageのように動作して欲しいんです。 dispatchEventだと、SendMessageのようにその場でリスナーが呼ばれてしまいます。 短いdelayでタイマイベントを起こすという方法を考えついたんですが、 もっとスマートな方法があればお願いします。
>>833 基本的なアイディアはそんなもんじゃね?
でもプログラムのあちこちでタイマ処理をガリガリ書くのはメンテしにくそうなので、
そのためのクラスを新しく作るのがいいんじゃないかい?
たとえばEventQueueクラスとか作って、送出したいイベント(とターゲット)を登録。
EventQueueの実装ではタイマイベントかStageあたりのenterFrameでキューを
チェックして、イベントがあればdispatchEventするような作りにする、とか。
FlexBuilder3 AS3.0です。 php経由でDBを読み書きしたいんですが、 「Error #2044: ハンドルされていない ioError : text=Error #2032: ストリームエラー」 が出ることがあります。 そこでエラー処理で、IOエラーが出た時はもう一度同じ関数を呼ぶ、という風に動作させたくて try{var loader:URLLoader = new URLLoader (request);} catch (error:IOError) {read();} のように書いたのですが、同じくエラーメッセージが出ます。 エラーは複数のFlashから同じテーブルにアクセスした時に発生しやすいようなんですが、 そもそもエラー処理は書いてるのに、何で「ハンドルされてないエラー」と出てしまうんでしょうか…?
>そもそもエラー処理は書いてるのに、何で「ハンドルされてないエラー」と出てしまうんでしょうか…? もう一度呼んだところでまたエラーになってそれがハンドルされていないんじゃね? ところで、URLLoaderのI/Oエラーって例外であがるの? httpStatus (or httpResponseStatus), ioErrorイベント周りの処理はやってますか?
838 :
835 :2008/12/23(火) 04:08:33 ID:0uG0k7bc
再起呼び出しの中では改めてエラーイベントは送出されないんですね。 その事すら知りませんでした。 以下も、イベント処理に関して全くの無知なんで、頓珍漢なこと書いてたらすいません。 >httpStatus (or httpResponseStatus), ioErrorイベント周りの処理はやってますか? ioErrorイベントの処理というのは、 addEventListener(IOErrorEvent.IO_ERROR,this.er); function er(er:IOErrorEvent):void{this.read();} というようなのでいいんでしょうか? (read()はphpへアクセスする関数です) httpStatusに関しては全く分かりません。 同じくHTTPStatusEventというののイベントリスナーを登録してやればいいんでしょうか?
839 :
835 :2008/12/23(火) 04:18:12 ID:0uG0k7bc
実は以前にも同じ問題が起きて、その時は適当にtry catchで囲んで、 エラーなら再起呼び出しとしてやると上手くいったように見えたんですが…。 今回のと読み取るDBも同じで、phpも同じサーバーの同じディレクトリにあるもので、一体何が違うのかよく分かりません。 強いて違いを挙げるとすれば、今回のは2つ以上のFlashPlayerが同じテーブルに同時にアクセスする可能性がある事ぐらいなんですか。 こういうストリームエラーって、どう対処するのが定石なんでしょうか?
840 :
Now_loading...774KB :2008/12/23(火) 04:19:03 ID:bnYgIFRj
841 :
835 :2008/12/23(火) 04:23:55 ID:0uG0k7bc
連投申し訳ありません。 httpStatusについてはリファレンス見て理解しました。
842 :
837 :2008/12/23(火) 06:32:26 ID:GYdH4aeo
>>838 >再起呼び出しの中では改めてエラーイベントは送出されないんですね。
ん?Youは勘違いしてないか?
>>835 のコードが断片的でイミフだった(try/catchブロック各々の役割を正しく理解してるか不安)のと、
catch節のread()からIOErrorがあがったりしたらそれに対しては無防備なんじゃ?と心配したのです。
再起呼び出しってことはread()の実装がおおよそ
>>835 のtry ... catchである、てことなのかな。
それでread()からIOErrorがあがることはない確信があったのか?
そもそも「書いたエラー処理」はエラー時にホントに実行されてるか?traceで確かめるべし。
Flash/AS3のエラー通知は例外とエラーイベントの2種類があり、そのタイミングや方法が違う。
エラーによって例外だったりイベントだったり。
URLが異常なときには呼んだ即例外だろうが、通信エラーなどこっちの都合お構いなしのものは
イベントなんじゃないのかな。リファレンスをよく見て違いを理解しましょう。
それよりも例外があがってエラーだから再帰呼び出しでリトライするって危険な設計だな。
ずっとエラーだったら無限再帰でスタック食いつぶしちゃうぞ。
最大リトライ回数を決めてループとかイベントハンドラでリトライするようにすべきだろ。
基本動作としては
>>838 のようにioErrorイベントハンドラでread()する感じになるだろう。
ここでまたエラーが発生した場合、どのようにコードが動くかをしっかり把握することが重要だ。
さらにエラー状態になったLoaderオブジェクトの後始末もしっかりやらないと、中途半端にサーバ
と繋がったままになったりしていつまでもGCされずにリソース食いつぶしかねないぞ。
844 :
835 :2008/12/23(火) 17:31:12 ID:4rZSoNYF
>>842 解答ありがとうございます。
>再起呼び出しってことはread()の実装がおおよそ
>>835 のtry ... catchである、てことなのかな。
そうです。POST変数代入等を省略して書くと、
function read(){
(URLVariablesの処理)
try{
request = new URLRequest ("DBread.php");
loader = new URLLoader (request);
loader.load(request);
} catch (error:IOError) {
this.read();
}
}
といった感じです。あとこのクラスのイベントリスナーとして
function er(er:IOErrorEvent):void{
this.read();
}
も登録してあります。
ご指摘の通りtry/catchを誤解してるも知れません。
漠然とtryブロックの中でエラーが起きたらcatchの処理をしてくれる、程度の認識で
read()→try{load()}→catch(read())→read()…でエラーが出なくなるまでread()してくれるだろうという意図でした。
とりあえずtraceで挙動を観察します。
>ずっとエラーだったら無限再帰でスタック食いつぶしちゃうぞ。
やはりそうですか…。回数制限付けます。
ところでストリームエラーの出る行番号がloader.load(request);ではなく
request = new URLRequest ("DBread.php");の行なんですが、これは普通にあることなんでしょうか?
FLASH CS3 , AS2.0 外部Jpegのスライドショーを作っています。 アクションは、fuse kitを使い、左から移動してくるように したいと考えています。 //インポート import com.mosesSupposes.fuse.*; ZigoEngine.simpleSetup(Shortcuts,PennerEasing); //初期値 photo._x = 0; //移動アクション photo.slideTo('450','null',1,'easeInOutQuint',0.5); で、この移動アクションをx軸上に、Loopで450ずつ動くように したいのですが、うまくいきません。 助言していただけますでしょうか。よろしくお願いいたします。
>>835 それはそうと「ioError #2032 ストリームエラー」そのものの解明も必要だな。
とりあえずPHP側やDBのログに何かエラーが吐かれてないかを確認してみたら?
パケットモニタで通信内容を覗いてみるのも手だね。
>>845 引数 'null' を 0 にするのでは
CS4,AS3
FLASHプレーヤー10の新しいテキストエンジンのAPIの事でお聞きしたいのですが、
ttp://www.adobe.com/go/textlayout_flashcomponent_overview リンク先のPDFにある、ダイナミックテキストの項のサンプルで
テキストの色は変えられる様ですが、その他、フォントの大きさ、縦書き等を
実現するにはどのように書けば良いんでしょうか?
以下サンプル
import flash.display.DisplayObject;
import fl.controls.TextLayout;
/* textLayout_flash is the base class for the Text Layout component.
If you bring up the properties on the TextLayout Component in the library, you will see this.*/
var myTextComponent:TextLayout;
// Instantiate the textLayout_flash class to create a TextLayout Component.
myTextComponent = new TextLayout();
// Add the new component to the Stage.
var myTextComponentOnStage:DisplayObject = addChild(myTextComponent);
// Get the Text Flow from the TextLayout Component.
var myTextFlow:Object = myTextComponent.textFlow;
// Change the color of the text to red.
myTextFlow.color = 0xFF0000;
var mEnemy:MovieClip = new enemy1(); このenemy1()を変数を使って表したいのですが、どうすれば良いでしょうか。 var mEnemy:MovieClip = new ["enemy"+count](); とかやってみましたが恐ろしい勢いで怒られました
>>850 なんと、こんなことが出来たのですね…
誘導ありがとうございます。ちゃんと読まなくてすみません
AS3を使っています。
navigateToURLに関して、
Flash内のリンクから「
http://test/?para[]=1¶[]=2 」へ飛ばしたいのですが、
(方法1)
var url:String = "
http://test/ ";
var linkURL:URLRequest = new URLRequest(url);
var getParam:URLVariables = new URLVariables;
var para:Array = ["1", "2"];
getParam.para = para;
linkURL.data = getParam;
navigateToURL(linkURL);
この方法だと「
http://test/?para=1¶=2 」へ飛んでしまいます。
(方法2)
var url:String = "
http://test/?para[]=1¶[]=2 ";
var linkURL:URLRequest = new URLRequest(url);
navigateToURL(linkURL);
この方法だと当然うまくいくのですが、
URLVariablesなどを使ってスマートに指定できないでしょうか?
よろしくお願いします。
>>850 ありがとうございます。
煮詰まっててすっかり見落としてました。
もう一つ、恥を覚悟でお聞きしたいんですが、以下のようなコード場合.fla側には
なんて書けば良いのでしょう?
今回の場合
var test:TextFlowExample = new TextFlowExample();
とだけ、書いてもうまくいきません。
コンストラクタの中身を直接flaファイルに書いて実行はできるのですが‥
たびたび申し訳ありませんが、教えて頂けるとうれしいです。
AS2.0の配列について質問です。 配列にデータを格納した後、別のデータと比較をして格納データが一致する 配列の番号を取得したいと思っています。 var data_ary:Array = ["abc","def","ghi","abc"]; var num_ary:Array = new Array(); var data_str:String = "abc"; var j:Number = 0; for(i:Number = 0; i <= data_ary.length; i++){ if(data_ary[i] == data_str){ num_ary[j] = i; j++ } } 現状こんな感じでnum_aryに格納するよう組んでいるのですが、 もっとシンプルな方法があれば教授願います。
>>852 getParam["para[]"] = 値;
とかは試せる?
>>854 クラスパスの設定と import してる?
>>855 スマートといえるかどうかわからないけれど
for 文の記述は二行に縮めることはできる
for(i:Number = 0; i <= data_ary.length; i++)
if(data_ary[i] == data_str) num_ary[j++] = i;
変数 j はなくして num_ary.push(i); こっちのほうがいいか
859 :
833 :2008/12/25(木) 23:13:47 ID:0MD0EN9L
>>834 今更ですがありがとうございます。
そうか、enterFrame使うなら、タイマなんて面倒くさいこと考えなくても、
空のMovieClipを1個用意してArrayでも持たせておいて、
enterFrameで何か登録されてたらdispatchEventするなり
実行するなりして削除、っていうのでいけそうですね。
860 :
Now_loading...774KB :2008/12/26(金) 02:49:00 ID:KccD1Fe+
質問させてください。
シーンに配置した、空(透明)のムービークリップに
Math.randomとattachMovieで、
別の複数のムービークリップをランダムに呼び出しているのですが
このムービー全体のフレームレート(再生速度)を
ボタンで変更したいようにしたいのですが、どうしたら良いでしょうか?
ttp://hakuhin.hp.infoseek.co.jp/main/as/fps.html#FPS_03 上記のページで、フレームレートを変更する方法は書いてあるのですが、
上手くいきませんでした。
私のムービーの場合、ランダムでシーンに配置した空のムービークリップに
別のムービークリップを呼び出しているので、
シーンに配置した空のムービークリップに、
上記サイトで説明されているようなActionScriptを記述してみたのですが、
ダメみたいです…
どなたか、ご教授いただけたら幸いです
【質問】 ライブラリパネルにあるムービークリップを動的に表示することはできたのですが、そのムービークリップ内のタイムラインが進みません。 playだとかgotoAndPlayしてもステージに配置してないmcは再生できないようです。どうしたら動的にmcを配置してそのmcを再生することができるのでしょう…?
862 :
861 :2008/12/26(金) 04:54:36 ID:uNNEmmRs
言語はAS3です
>>857-858 どうもありがとうございます。
push便利ですね。これを使ってみます。
>>861 mcである以上playしなくても自動再生されるはず。
その上位にある何かが悪さしてる可能性大
866 :
Now_loading...774KB :2008/12/26(金) 16:34:16 ID:KccD1Fe+
質問です 指定したフレームにランダムに飛ばす フレームアクションはどうしたらいのでしょうか? gotoAndPlay()の行き先はランダムになる感じです。 例えば、1フレーム、5フレーム、9フレームにランダムに飛んで ループ再生されるようにしたいです。 例えば、 1→5→9→5→1→9→1→9→5 みたいに、ランダムに再生させたいと思っています。 アドバイスよろしくお願いします。
gotoAndPlay(Math.floor(Math.random()*9)+1); 1,5,9だけに絞りたいなら[1,5,9]という配列hoge作っておいて gotoAndPlay(hoge[Math.floor(Math.random()*3)]);
868 :
Now_loading...774KB :2008/12/26(金) 17:22:49 ID:KccD1Fe+
>>867 有難うございます!
早速やってみます!
>>26 解決です、ありがとうございました!メインタイムラインの長さが足りなかったようです
870 :
Now_loading...774KB :2008/12/27(土) 15:32:27 ID:Wu151gWQ
外部クラスのドキュメントクラスを指定してCS3でFLASHを作りました。 これにローディングバーを付けたいのですが、タイムラインは空の1コマだけでドキュメントクラスを使っているので、どこにローディングバーを入れたらよいか解りません。 as3でメジャーなやり方などあるのでしょうか?
ActionScript2.0の質問です。 お絵かき用のカラーパレットを作っています。 color1からcolor4までインスタンス名を付けたムービークリップを画面に配置し、 _rootのタイムラインに以下のスクリプトを書きました。 やりたいこととしては、色を配列に入れておき、画面をクリックしたとき、 color1〜4のムービークリップ上なら、配列の該当する色をとってきて、ブラシに色を付けるといったことです。 var colorList:Array = [0x33FF33, 0x00CCFF, 0xFF99CC, 0xFF99CC]; var nowColor = colorList[0]; //現在の色 //カラーパレット設定 function colorSelect() { for (N=1; N<=_root.colorList.length; N++){ _root["color"+N].onRelease = function(){ trace(N); //←ここで値は、なぜか5とでます。 _root.nowColor = _root.colorList[N-1]; _root.brushColorChange(); } } } //クリック時の動作(カラー選択) _root.onMouseDown = function(){ _root.colorSelect(); } 続きます
続きです。 上記のスクリプトを動作させてみたところ、どのムービークリップ上でクリックしても、Nの値が5と出てしまい、配列から色を持ってこれませんでした。 _root.color1.onRelease = function(){ _root.nowColor = 0x33FF33; _root.brushColorChange(); } のように、forで回さず、一個一個書いていけば、ちゃんと動くのですが、 最終的には色数が50色以上に増える予定なので、処理をまとめたいと思います。 なにか良い解決方法ありますでしょうか?このスクリプトを直してもらってもいいですし、 こういう方法の方がいいよ!っていう書き方、まとめ方がありましたら、ご教授よろしくお願いします。
その部分はクリックして初めて実行される部分なのでfor文の中では実行されません クリックした時にはすでにfor文を抜けたあとでNが5になってるので、何回押しても5になります for文を回すときに値を["color"+N]の中に保存しておいて、クリック時にそこから取り出せばいいんじゃないでしょうか
>>873 ありがとうございます。
Nが5になるということは、説明で理解できました。
>for文を回すときに値を["color"+N]の中に保存しておいて、クリック時にそこから取り出せばいいんじゃないでしょうか
ここがまだ理解できないのですが、もう少し詳しくご教授願いますでしょうか。
よろしくお願いします。
たとえばcolor1〜4のムービークリップの中に変数myColorなどを作っておいて for文で回したときに _root["color"+N].myColor = _root.colorList[N-1]; などしておいて、クリックしたときに _root.nowColor = this.myColor; とかすれば解決するんじゃないでしょうか
876 :
Now_loading...774KB :2008/12/27(土) 22:23:52 ID:hTFWKEtM
ActionScript2.0の質問で質問させてください。 イメージギャラリーを作っているのですが、ムービーの配置転換に困っています。 casaフレームワークで先にステージ上にすべての画像を読み込みして、そのひとつずつの画像ごとに リンケージ「box」中の「img」というムービーに置き換えてから表示させたいと思っています。 どうしたらいいでしょうか。 _mc = this.createEmptyMovieClip("_mc", 0); var thumbs:Array = myLoadGroup.getLoads(); ←フレームワークcasaを使って複数画像読み込み for(var i:Number=0;i<thumbs.length;i++){ var container:MovieClip = thumbs[i].getMovieClip(); ←ここに一つずつ画像が。 var mc = _mc.attachMovie("box","mc"+i, i+1); ←リンケージboxを配置 ここでbox内のムービークリップimgを置き換え処理!? } 置き換えたmcを一回転させながら表示しようと考えたときに置き換え処理をしなければならないと考えました。どなたかお教えください。
>>875 ありがとうございます。
>などしておいて、クリックしたときに
>_root.nowColor = this.myColor;
これはどのムービークリップをクリックされたのか判定するのに、どう判定するのでしょうか?
僕の頭では、またforで回し、そのなかに.onReleaseで_root.nowColor = this.myColor;
を入れてやるという思考しかできないのですが、これだと
また.onReleaseのときには5になってしまい、よく分かっておりません。すいません・・・。
>>876 置き換え処理というのがどういうことをしたいと思っているのかよくわかりませんが
imgのxとyを取得して同じ場所にmcを配置すればいいんじゃないでしょうか
>>877 別にfor文の中で無名関数を設定する必要はないと思います
たとえばそれぞれのムービークリップの中にあらかじめ関数を作っておいてfor回すときにそれを設定するとか
ムービークリップの中で関数を定義
function onReleaseHandler(){
_root.nowColor = this.myColor;
_root.brushColorChange();
}
for文で設定
for (N=1; N<=_root.colorList.length; N++){
_root["color"+N].onRelease = _root["color"+N].onReleaseHandler();
}
AS2はよくわからないのでこれであってるのかわかりませんが。。。
>>878 ありがとうございます。
僕の力不足で、理解ができませんでした。申し訳ないです。
これ以上続けてもぐだぐだになりそうなので、これで終わります。
本当にありがとうございました。
880 :
Now_loading...774KB :2008/12/28(日) 00:11:06 ID:aBn+iBNA
>>876 ただ単に配置だけなら_x _yだけの処理でよかったのですが、リンケージboxの中心でboxを(box内のimgに画像を当て込んで一緒に)1回転させたいのです。
_x _yで配置するとboxだけが回転して画像はそのままなので。。。
画像もbox内に入れたら一緒に回転するのでは?
882 :
Now_loading...774KB :2008/12/28(日) 00:47:16 ID:aBn+iBNA
>>881 そうなんです。ですが私が未熟でbox内にどのように入れたらよいかわからず。。
しかも複数画像を読み取るためにプリローダーを入れないといけないことからまず画像を一括読み込みし
画像の数だけforでループ+attachMovieで額縁を当て込んでその中に入れるということが
複雑すぎて恥ずかしながら混乱しています。
行いたい処理の流れを細かく箇条書きにでもして 一つずつ解決していくといい
884 :
Now_loading...774KB :2008/12/28(日) 05:48:15 ID:3LCIaMK9
>>884 FlashDevelopの中にAS3 Project with Preloaderというものがあるので
それを参考にするといいですよ
>>885 お返事どうもありがとうございます!そのようなものがあるのですか、ちょっと見てみますね。恩に着ます!(*^^*)
AS2で質問です。CS3を使っているのですが、 ウィンドウ→サンプルライブラリ→ボタンの中にボタンのサンプルがありますよね? あのボタンの文字が初期ではEnterになっているのですが、この文字を変える事は出来ないのでしょうか?
作成したPreloaderクラスでのプリローダーで読み込みが終わった時、以下のコードでこのPreloaderクラスと同じディレクトリに置いてあるMain.asクラスを実行したいと思っています。 var mainClass:Class = getDefinitionByName('Main') as Class; addChild(new mainClass()); しかし、 ReferenceError: Error #1065: 変数 Main は定義されていません。 at global/flash.utils::getDefinitionByName() at Preloader/init() at Preloader/onEnterFrame() というエラーが出て再生できません。 以下のようにすればMainは実行されるのですが、依存関係で必要なクラス群が全てロードされてからプリローダークラスの実行が始まるそうで、プリローダーが使えません。 var mainClass:Main=new Main(); addChild(Main); 一体どうしたらプリローダー→Mainと正しく実行されるのでしょうか。どうかよろしくお願いします。
889 :
888 :2008/12/28(日) 17:07:45 ID:y/9SBdU+
> ReferenceError: Error #1065: 変数 Main は定義されていません。 Main へのパス指定が間違っているのでは。 test というパッケージに Main がある場合 getDefinitionByName('test.Main') as Class; と指定する
>>890 どうもです。私もそう思ったのですが、同じディレクトリで、両方ともパッケージは無名でいつもなら問題ないはずなのですが。謎です
>>891 ドキュメントクラスはPreloader。ソース上はPreloaderからMainへの依存関係がない。
それでCS3はswfにMainを入れる必要がないと思ってコンパイルしてないんじゃないか?
888のはてな日記を見て思ったんだが、ドキュメントクラスはあくまでMainで、
MainのファクトリがPreloaderであることをFrameメタデータで指定するんじゃね?
>>892 どもです!ありえると思います、それならMainが見つからないっていうのも尤もですね。ドキュメントクラスはMainですね!
ただ、Flash CS3で作成していてFrameメタデータというのが使えないようなのですが(Flex専用?)。ずっと検索してましたがFlash CS3ではどうしたらよいのか検討が付きません…
894 :
892 :2008/12/28(日) 21:29:12 ID:q++LKdYM
>>893 あー、そうなんだ。FrameはFlex専用なんだ。
というかFlexでもマニュアルに載ってない一般非公開のメタデータなんだけどね。
んじゃCS3ではやはりドキュメントクラスはPreloaderにして、
後はswfにMainを入れてくれるようCS3をなんとか説得するしかないのかな。
ライブラリに空のMCをクラス名=Main、swfに書き出し=Yesで登録して実際のコードはMain.asに書く、
でやったらどうだろう?
●というラベルの、○コマ目に飛ぶ、というASは どう書いたらいいでしょうか? ラベルをシーンに変えないとダメでしょうか?
なんと、Preloaderがドキュメントクラスですが、Mainの一部が動きました!プリローダは表示されませんでした。 プリローダは先ほどのはてな日記のもので、Mainを作ってaddするinit()が呼ばれた時、trace(framesLoaded)は1となり、flaのフレームを1→2と増やすと、trace(framesLoaded)は2となりました。フレームじゃだめのようです。 話がそれました、以下が出たエラーです。 TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at Main() at Preloader/init() at Preloader/onEnterFrame() Mainのどこかなと調べてみると、 mat_array[jj].translate(-stage.stageWidth/2, -stage.stageHeight/2); 現在stageを参照するとnullが返るという状態です。
>>887 ボタンをステージに配置>Wクリック
Enterの文字をWクリック>書き換える
でできませんか?
>mat_array[jj].translate(-stage.stageWidth/2, -stage.stageHeight/2); > >現在stageを参照するとnullが返るという状態です。 Mainのコンストラクタの中(=Stageに追加される前)でstageにアクセスしてるからだろ。 stageが必要な処理はaddToStageイベントハンドラでやるべし。
>>895 ラベルに飛んだ後
currentframe + 進みたいフレーム数
ではどう?
ActionScriptで 名前._visible=false 名前.stop をかけたムービーインスタンスは、 その間もCPUに負担をかけ続けるんでしょうか。
>>898 できました(涙)MainコンストラクタでaddToStageイベントリスナ、コンストラクタ外でステージ使う処理をしました。コンストラクタ実行時はまだステージに乗ってないのですね、勉強になりました!
プリローダの問題はもう少し調べてみることにします
どうもありがとうございました!!
902 :
Now_loading...774KB :2008/12/29(月) 15:54:42 ID:E9Xc/im1
AS3のMath.random()の戻り値は 1を含むのか含まないのかどちらでしょうか。 ググッてもどちらも載っている感じがします。 主に小数で書いている所は含む、分数は含まない感じです。
904 :
902 :2008/12/29(月) 16:14:31 ID:E9Xc/im1
905 :
895 :2008/12/29(月) 19:42:07 ID:lYKcWjx8
>>899 レス有難うございます!
ラベルの先頭2フレームは別の処理待ちで行ったりきたりしているので
ちょっと難しいです・・・
フレーム番号指定だと、前の方にラベル追加した時困るので
ラベル+フレーム番号で指定ができれば便利だな〜と思ったのですが・・
>>905 どういう構造でどういうことしたいのかよくわからんのだが、
飛びたい先に別のラベルをつければいいんじゃないのか??
ラベルも○コマ目も同一タイムラインでの話じゃないのか?
907 :
905 :2008/12/29(月) 20:15:40 ID:lYKcWjx8
>>906 こんな感じです↓
______________________________________________________________________________
| ラベル1 | ラベル2 | ラベル3 |
______________________________________________________________________________
|キー入力待ち |キー入力待ち |キー入力待ち |
>飛びたい先に別のラベルをつければいいんじゃないのか??
全くその通りなのですが、そんな方法があれば
見た目もスッキリして後々直しやすいのになぁという願望でした。
908 :
Now_loading...774KB :2008/12/29(月) 20:49:16 ID:LtEvYtpU
環境)OS:WinXP-Pro,Mem=3GB,ソフト:FlashCS3-Pro(Player9.0,AS3.0) メモリ開放の方法で質問です。 外部テキストを読み込み、特定の文字列があるかどうかをチェックするASを書きました。これは 目的の動作をしたのですが、予想以上に(特にSWFをスタンドアローンで動かした時に)メモリを 消費しています(外部テキストが26MBあるので仕方ないかも知れませんが・・・) 大まかな流れは以下の通りです。 var fileLoader:URLLoader=new URLLoader(); //fileLoaderオブジェクト ↓ fileLoader.load (new URLRequest(目的ファイル名)); ↓ public function file_loaded (fileEvt:Event) { 読み込み後に文字列チェック } 文字列有無の判定は1回だけですので、不要なオブジェクトはさっさと消してメモリ領域を開放 したいのですが、うまく出来ません。 (プレビューで130MB,スタンドアローンで420MBも使っています) 調べて試したのは、fileLoader=new URLLoader(); での再定義と removeEventListener () です。本当はガーベージコレクション(GC)をしたいのですが、これはデバッグ用とのことなので 使えませんでした。 どうしたら良いでしょうか?
これはgifアニメです
>>910 どうもありがとうございます。
去りますね。。。w
拡張子ってものを知っておくと役立つかもね!
>>908 URLStreamクラスを使うってのはどうだ?読み込み途中でもデータにアクセスできるよ。
URLStreamがアクセス済みのデータをメモリ溜め込まずにどんどん捨てるような実装に
なっていればメモリをバカ食いすることはないのではないかと思うのだが、そこは確認して
ないので分からんので解にならないかもしれんけど、試してみる価値はあるんじゃないかな。どう?
>>914 ありがとうございます。
確かに途中でアクセス出来るのは魅力的ですが、目的の文字列は大抵テキストの
終わり辺りにあるので、全部読み込むのと変わらないかと思います。
あと、URLStreamクラスにメモリ開放させるメソッド類があれば良かったのですが、
リファレンスを読む限り無さそうです。
916 :
914 :2008/12/29(月) 23:34:35 ID:F4WhMoSh
progressイベントでURLStreamからreadしてあげれば、readされた部分は URLStreamも最後までメモリ上に保持する必要はないはずなのでどんどん 捨てるような実装(たとえばリングバッファとか)になってないのかなぁ、と。 もしそうなってるのなら、どんだけデカいデータを読んでもメモリ消費量は 一定に抑えられるのではないか、と思ったわけです。
917 :
908 :2008/12/30(火) 00:11:19 ID:wpqOZnXM
>>916 なるほど、もう少し調べてみます。
というか、何か作ってみますw
URLStreamってバイナリだろw 23MBのテキストをURLLoaderで読み込んで何か問題あるの? メモリ解放はユーザーのタイミングではできませんw
919 :
914 :2008/12/30(火) 03:36:25 ID:boG7lgXO
>URLStreamってバイナリだろw IDataInputインタフェース実装してるからreadMultiByte()で文字コード変換も可能だよ。 でも1バイトずつreadして改行文字を探しつつByteArrayに放り込んで、 1行溜まったらByteArray.readMultiByte()で文字列化するのがいいと思う。 その方が後の検索処理なども考えやすそう。 >23MBのテキストをURLLoaderで読み込んで何か問題あるの? やたらとメモリを食ったからなんとかしたいって話なんだろ?いいじゃないか。 クライアント環境のスペックが厳しいなんてことはザラにあるべ。 >メモリ解放はユーザーのタイミングではできませんw だからメモリをガバガバ確保しにいかない方法を提案しようとしてるんじゃが… ワシが悪いんか?ワシが悪かったんか?のぅ、トメさんや。
必要なメモリを食うのは当たり前で、それで実際に弊害がなければ問題ないでしょw 変にバイナリから変換なんて効率の悪いことをするのはお勧めできない むしろオブジェクトが必要なくなった時に、きちんと非活性化してGC対象にするってのを 心がけた方が良い
921 :
914 :2008/12/30(火) 04:39:18 ID:boG7lgXO
>変にバイナリから変換なんて効率の悪いことをするのはお勧めできない
URLLoaderだってdataに設定するStringを作るときに中でコード変換が入るだろ。
だから外で明示的にreadMultiByte()を呼んでコード変換するのと有意な差があるとは思えん。
>必要なメモリを食うのは当たり前で、それで実際に弊害がなければ問題ないでしょw
必要なメモリっていうけど、23MBのテキストをランダムアクセスするんなら丸々全体が必要だけど
検索のためにシーケンシャルにしかアクセスしないんなら、必要なのは今読んでる周辺だけ。
だからスキャン済みでもう必要なくなった部分は捨てる。といってるんだけどな。
>むしろオブジェクトが必要なくなった時に、きちんと非活性化してGC対象にするってのを
それは当然だ。まぁ確かに
>>908 のプログラムも23MBものテキストを扱う周辺だけでも
こまめに不要になった変数にnullを入れて参照を断ち切っていくだけでもメモリ使用量を
もっと抑えられるかもね。
>>918-921 有難うございます。
試しに(勉強がてら)、919さんのURLStream案でASを組んでいますが、
> 1バイトずつreadして改行文字を探しつつByteArrayに放り込んで、
1行溜まったらByteArray.readMultiByte()で文字列化
の具体的な方法が分かりません。多分、while文で溜め込み&文字列形成するということだと思うのですが、
手元の本やWebからはヒントが得られませんでした。
現時点では、addEventListener() で弱参照にして更にremoveEventListener()する という二重の処理を
施しています(メモリ開放が任意のタイミングで行えないので、気休め程度かもしれませんけど)。
923 :
914 :2008/12/30(火) 14:34:09 ID:boG7lgXO
private var stream:URLStream; private var completed:Boolean = false; private var buffer:ByteArray = new ByteArray(); private var line:String; private function readLine():Boolean { line = null; while (true) { if (stream.bytesAvailable == 0) { if (!completed) return false; // ロード未完で行途中 if (buffer.length == 0) return false; // ロード完了でもう行なし break; // ロード完了で最後の行は末尾に改行なし } var b:int = stream.readByte(); buffer.writeByte(b); if (b == 10 /* LF */) break; // 改行発見 } buffer.position = 0; // バッファのカーソルまき戻し line = buffer.readMultiByte(buffer.length, "shift-jis"); buffer.position = buffer.length = 0; // 次の呼び出しに備えてリセット return true; // 行あり }
924 :
914 :2008/12/30(火) 14:35:30 ID:boG7lgXO
// 923つづき private function onProgress(event:Event):void { while (readLine()) doSomething(); } private function onComplete(event:Event):void { completed = true; while (readLine()) doSomething(); // 後処理が必要ならココで。 } private function doSomething():void { /* lineを好きなようにいじる */ }
AS3.0です FlexBuilderでActionScript書いて簡単なゲームを作ろうと思ったんですけど, MouseMoveイベントが起こるたびにgraphicsオブジェクトの GraphicsクラスのdrawRectメソッドやLineToメソッドで描画しているのですが 処理がめっちゃ重くなります. どういうふうに描画したら軽くなるんですか? よろしくお願いします.
>>926 更新時にgraphicsの内容をクリアしてないとか
あるいはリアルタイムに描画しすきとかじゃないの
BitmapDataにdrawする
AS3.0のKeyboardEventを使ってキー入力イベントを作りたいのですが A〜Zのようなメイン部分や一部のキーコードを指定しても反応しません。 カーソルキーやスペースキーなど逆に一部は指定すれば反応します。 この原因は何なのでしょうか。
>>930 flash.ui.Keyboardクラスのキーコードを使って指定してないか?
A〜Zなんかは、Airじゃないと動かないよ。
>>931 どうもです!
FLASH以外の知識がないので、正しいかはわかりませんが
Flexを使わないとテンキー周りのキーや修飾キー以外使用できないんですね。
今使えるキーだけでやってみようと思います。
933 :
930 :2009/01/02(金) 06:03:41 ID:VWbg2VQG
>>931 いや、そうじゃなくて、
flash.ui.Keyboardクラスに定義されてる定数が使えないのであって、
A〜Zなどのキーを指定する場合は、
キーコードを直接数値で指定すればいいってこと。
935 :
Now_loading...774KB :2009/01/03(土) 00:50:06 ID:FEl77jin
質問させてください。 movie01というインスタンス名のムービークリップに 識別子(リンケージ)で、それぞれnote1、note2、note3と名づけた3つムービーを、下記のスクリプト ここから--------- //変数 a に 1〜3 の整数をランダムでセット var a = Math.floor(Math.random()*3)+1; // _root に 識別子 "note"+a を // "note" というインスタンス名で 呼び出す _root.attachMovie(["note"+a], "note", 0); // "note" の x座標とy座標を設定 _root.note._x = 10; _root.note._y = 10; ここまで--------- で読みこみ、 note1、note2、note3をランダムに再生しています。 が、このランダムに再生されているnote1、note2、note3にアクションが効きません(泣) 例えば、ボタンインスタンスに on (release) { _root.movie01.stop(); } というスクリプトを書いても、 ランダムに読み込み・再生されている note1、note2、note3は再生されっぱなしになってしまいます。 インスタンスmovie01内に、note1、note2、note3を読み込んでいるわけですから、 上手くいくと思っていたのですが、、、 こういった場合はどうしたら制御出来るのでしょうか? どなたかご回答よろしくお願いします。
>>935 読み込みとattachMovie()は別ものだよ?
movie01として扱えるのは、外部swfをMovieClipLoaderなどでmovie01にロードした場合か
attachMovie()する時に、movie01というインスタンス名を指定した場合。
ここでは_rootにnoteというインスタンス名でattachしてるんだから、ターゲットパスは、_root.note
movie01は上記のスクリプトではまったく関係ない。
ちょこっと基本事項を確認したほうがいいと思う。
937 :
Now_loading...774KB :2009/01/03(土) 02:43:46 ID:FEl77jin
>>936 有難うございます。
movie01は関係ありませんでしたね。
お恥ずかしい限りです。
見直して、自分でやってみます!
なるべく自分でやってみて
また、分からなかったら質問するかもしれません。
すみません…
とりあえず本当に有難うございました!
AS2.0での質問です attachMovieで作ったmcを一定条件をクリアした場合にremoveMovieClipさせているんですが、 その一定条件をクリアした後、1000ミリ秒待った後にremoveMovieClipへ移行させるといったことは可能でしょうか? どなたか回答お願い致します。
画面を自由に動き回るMC_Aと キー操作で自由に動かせるMC_Bが ぶつかってもめり込まないようにするにはどうしたらいいですか? 今は、ぶつかったら互いに進んだ分戻る、という処理をしていますが、 どうしてもめり込んでいってしまいます。>< AS2です。宜しくお願いします。
>>940 めり込まない位置まで戻すか
進む前に判断してめり込まない位置まで進ませる
942 :
940 :2009/01/04(日) 15:34:19 ID:kxybylcD
>>941 レス有難うございます、一応前者の方法(HITしたら移動の3倍戻る)で
やってるんですが動きがおかしいです。(原因不明)
片方が動いていない時は、めり込まないのですが
両方が動いている場合、MC_Bをキー操作でMC_A側に押し続けると
なぜかめり込んでいってしまうんです。
ガクガク動きながら通り抜けてしまう事もあります。
通り抜けた後は、ものすごく動作が重くなります。
何が原因なのでしょうか?
>>942 例えばMC_Aが画面下方向に動いててMC_Bを上方向に動かした時、
MC_Aが動く量も考えてMC_Bを戻さないとだめなんじゃないの?
944 :
940 :2009/01/04(日) 17:38:51 ID:kxybylcD
>>943 有難うございます!お互いがこんな感じで
-----------------
■MC_A
↓1移動
↑5移動
■MC_B
-----------------
HITしたら、
-----------------
↑3移動
■MC_A
■MC_B
↓15移動
-----------------
と思いっきり突き放しているので、通り抜ける訳ないのですが
お互いがお互いに向かっている時、キーを押し続けていると
通り抜けてしまうんです。
あと、動作が異様に重くなるのは、traceを消したら直りました!
それなんか根本的なところミスしてんじゃないの ヒットチェックの前に移動ルーチンがあったり 移動している方向逆だったり
946 :
940 :2009/01/04(日) 19:41:55 ID:kxybylcD
>>945 うーん確認したんですが
そんな事はないようでした。
思ったんですが
------------
■MC_A
→1移動
↑5移動
■MC_B
------------
の時HITしたら
------------
■MC_A
←3移動
↓15移動
■MC_B
------------
でこの時点で動きがおかしくなってる気がするので
この積み重ねで異様な動きになってるのかもしれません。
もう少し色々やってみます。
有難うございました!
Flashでメールフォームを作ってます。 メールフォームのCGI本体はレンタルなので、別ドメインにあるのですが、 これが原因で送信ボタンを押してもloadVariablesNumが機能しません。 ローカルではきちんと動くのですが、サーバに上げると動かなくなってしまいます; 何か解決策はないでしょうか…
>>947 「Flash」「クロスドメイン」について検索
AS2.0での質問です ブラウザのサイズに合わせてムービークリップ(contents)を拡大・縮小させたいのですが、 それはうまくいっているのですが、 contentsを常にステージの上下100ピクセルあけてかつ左右の中央にくるようにしたいのです。 左右がうまくいかず、左あわせになってしまいます。 スクリプトは下のように書いています。 どうかアドバイスお願いします。 Stage.scaleMode = "noScale"; Stage.align = "TL"; var MW:Number = contents._width; var MH:Number = contents._height; contents._y = Stage.height+100; contents._x = Stage.width/2; var sListener:Object = new Object(); sListener.onResize = function() { contents._height = Stage.height-200; contents._width = MW/MH*(Stage.height -200); } updateAfterEvent(); Stage.addListener(sListener); sListener.onResize();
アドバイス欲しいって言うから意地悪するよ。 onResize = function() {〜};の間で右辺の欠けている三つの式を完成させよ Stage.scaleMode = "noScale"; Stage.align = "TL"; var MW:Number = contents._width; var MH:Number = contents._height; var sListener:Object = new Object(); sListener.onResize = function() { contents._x = ; contents._y = ; contents._height = ; updateAfterEvent(); }; Stage.addListener(sListener); sListener.onResize();
>>953 onResize = function() {〜};の間に位置を指定するんだったですね。
ありがとうございます!出来ました!
Stage.scaleMode = "noScale";
Stage.align = "TL";
var MW:Number = contents._width;
var MH:Number = contents._height;
var sListener:Object = new Object();
sListener.onResize = function() {
_root.contents._y = +100;
_root.contents._x = Stage.width/2;
contents._height = Stage.height-200;
contents._width = MW/MH*(Stage.height -200);
updateAfterEvent();
};
Stage.addListener(sListener);
sListener.onResize();
AS3です。 HogeSuperのオーバーライド関数のShowMsgを HogeSub2で実行するにはどうすればいいでしょう。 var hoge:HogeSuper = new HogeSub1(); hoge.ShowMsg(); hoge = HogeSub2; //エラー 暗黙で型変換されている hoge.ShowMsg();
HogeSuperがスーパークラス、 HogeSub1、HogeSub2がサブクラスです。 記述でオーバーライドと書く必要がありますが、 やりたい事はポリモーフィズムです。
>>955 HogeSub2ってどっから出てきたんだよw
>>957 ありがとうございます。ヒントになりました。
これでいいでしょうか。
一応、HogeSub1、HogeSub2両方を表示できました。
var hoge:HogeSuper;
var hoge1:HogeSuper = new HogeSub1();
var hoge2:HogeSuper = new HogeSub2();
hoge = hoge1;
hoge.ShowMsg();
hoge = hoge2;
hoge.ShowMsg();
959 :
Now_loading...774KB :2009/01/07(水) 14:48:20 ID:1HjaqTH0
WinXP-ProでFlash-CS3-Pro(AS3.0)です。
メーラーを立ち上げず、CGIも使わないで、スタンドアローンFlashのみでメールを送信する
方法はありますでしょうか?
目標はPC内で時間が掛かる処理を行わせて、その処理状況をメールで携帯などに知らせ
るものです。
先ずは、「お知らせタイマー」みたいな感じで、固定メアドに一定間隔(30分毎とか)でメール
を送信したく思っています。
上の
>>949 にCGI不要の方法はありますが、これは送信毎にメーラーを立ち上げる必要がある
ので取り入れられない状況です。
よろしく願います。
そんなスパム砲台をweb上で使用できるFlashムービーでできるわけないじゃん できたらウィルスの類として報告されるレベル きちんと自分でサーバー立ててメール送信用のCGI置きな
>>960 Thx
なるほどFlashでは無理でつか。
962 :
Now_loading...774KB :2009/01/07(水) 19:28:45 ID:FL5Luyqc
ムービークリップインスタンスを setInterval()を使い、ボタンでフレームレートを 遅くしたり、早くしたり出来るサンプルがあるのですが、 このムービークリップインスタンスを、ボタンアクションで on (press) { _root.インスタンス名.stop(); } と書いても、停止出来ません。 説明不足かもしれませんが、考えられる理由を アドバイスいただけたらと思います。 よろしくお願いいたします。
>>962 clearInterval()しないといけないんじゃないかな?
>>961 メールサーバー(ラディッシュとかだっけ?)を立ち上げて
Flashはメールサーバーにソケット通信を使ってメールサーバーへ
アクセスして、メールを送信ってのは可能だったような。
前やったときは日本語がうまくいかなくて投げた。
素直に外部サーバー+PHP使ったほうがスマートだべ
AS3です。 同じスーパークラスからの サブクラス(息子兄弟クラス)の間で、 使えるようなアクセス制限(開放)みたいなのが ありましたら教えてください。
>>965 そんなのない。
その息子兄弟はそれなりに蜜な関係にあるんだろうから同じパッケージにして
デフォルト(=internal)のアクセス権にするのがいいとこじゃね?
それにしてもへんなアクセス制限だな。なんでそんなに隠したがるんだ、シャイだな。
どうしてもパッケージを分けたきゃすなおにpublicにするんだね。
カスタム名前空間にするという方法もあるが、適切な用法なのかわからん。
>>966 ありがとうございます。
どういうアクセス制限をするべきかは分かっていなくて、
簡単なゲームを作りながら、いろいろ試していました。
また、packageは使い方がよく分からなくて、
エラーが出ない方法だった、1つのファイルに
名前の無い1packageを作って、ファイルの内容全てを囲み、
その中にファイル名と同じ名前の1クラス(public)だけを作っていました。
packageの名前付け、メソッドにinternalを使う、
クラスにpublic以外を使う、辺りをいろいろ試して見ます。
そりゃ普通にprotectedで済むんじゃねーの?
>>968 サブクラス同士でのアクセス権限の話かと
970 :
965 :2009/01/08(木) 21:48:30 ID:Vca2hgXu
>>967 のを試してみました。
(FlexSDK3、AS3、mxmlc.exe、警告:ture、strict:ture)
>packageの名前付け
同じ名前のフォルダにファイルを入れないといけなく不便です。
(フォルダに入れたことでパッケージしたとも言えるから、
packageに名前をつける意味はないような)
>メソッドにinternalを使う
教えていただいた、「同じパッケージにして
デフォルト(=internal)のアクセス権」で意図した事ができました。
>クラスにpublic以外を使う
internalは使えましたが、private、protectedはエラーが出ました。
また、1ファイルには1クラスのみしか使えなく不便です。
>>968 >>969 そうです。⇔の所です。
superのをsubは使えますが、逆はoverrideでしか使えないので、
packageを使わない方法では難しいのかもしれません。
super
↓ ↓
sub1⇔sub2
971 :
Now_loading...774KB :2009/01/09(金) 00:46:30 ID:TvsAyI2B
環境)OS:WinXP-Pro,Mem=3GB,ソフト:FlashCS3-Pro(Player9.0,AS3.0) ByteArrayクラスとURLStreamクラスで質問です。 「ActionScript 3.0 逆引きクイックリファレンス」(毎日コミュニケーションズ)のp323にある画像読み取りAS を改変してテキストも読み込もうとしていますが上手くいきません。下記は(著作権上)抜粋したものです。 stream.addEventListener(ProgressEvent.PROGRESS, progressHandler); stream.addEventListener(Event.COMPLETE, completeHandler); stream.load(new URLRequest("photo.png"))// ←※ Txt.txtに変える function progressHandler(event:ProgressEvent):void { if (event.target.bytesAvailable) { event.target.readBytes(imageData, imageData.length); //元々はPNGなのでオブジェクト名はimageData } } function completeHandler(event:Event):void { loader.loadBytes(imageData); } 矢印のURLRequestの引数 photo.png を1KBほどのテキストファイル Txt.txt に変えると以下の エラーが出ます。 Error #2044: ハンドルされていない IOErrorEvent : text=Error #2124: 読み込まれたファイルの形式が不明です。 ところが、この引数にJPGやGIFを入れると問題なく動作します。何故、テキストファイルだとこのようなエラーが 出るのでしょうか? ヘルプで見ても、エラーは checkPolicyFile または securityDomain プロパティ (context パラメータのプロパティ) が null 以外であった場合 ということなのですがよく分かりません。
エラーがどこであがったのかも詳しく。 loader.loadBytes()のとこか?stream.load()のとこか? addEventListener("ioError", ...) して正しく把握してみるべきだ。 それから、今回のエラーと関係があるかはわからんが、imageDataへの追加を progressイベントでしかやっていないが、completeイベントでもやるべきだ。 completeイベントでもstreamにデータが入ってきていることもあるので。 さらにいうと、データが少ない場合などprogressが全く呼ばれずいきなりcompleteということもある。
973 :
Now_loading...774KB :2009/01/09(金) 14:09:27 ID:cD2xAG6e
Flash8pro AS2 文字列(関数名)から関数を実行することはできますでしょうか。 使えるならどうすればよいのでしょう。
>>973 eval とか 配列演算子アクセス で調査
975 :
Now_loading...774KB :2009/01/09(金) 14:53:45 ID:iu4nW0Uy
オブジェクト消去で質問です。(WinXP-ProでFlashCS3Pro,AS3.0)
使用メモリ低減のため、不要なオブジェクトを消去したいのですが、null,delete,undefined の使い分け
と実際の記述が分かりません。
調べたところ、
null : データが無いことを示す
delete : オブジェクトの動的プロパティを消去
undefined : 未定義
ということは分かりました。
ttp://www.himco.jp/articles/pdf/AS3_tutorials.swf のように例えばobject1を
消そうとしたとき、
delete object1.data;
object1=null;
では、deleteのところでエラーになります。delete object1.data; 無しなら無問題です。
一応、object1については addEventListener で弱参照にして、処理後 removeEventListener していますが
オブジェクトの消去では、弱参照と removeEventListener と object1=null; で十分なのでしょうか?
>>977 さんきゅうです。エラーはプロパティについてですが、
1189: 固定プロパティ fileLoader を削除しようとしています。削除できるのは、動的に定義されたプロパティだけです。
と出ます。
※ リンクPDF中の「Adobe 上条さんの記事〜」の1つ目のURLは Page Not Found になっています。
AS3.0はプロパティの「値」をdeleteできないよ null代入しとけばよい delete使うのはダイナミックな要素(プロパティ)扱う時くらいにおぼとけばいいんじゃね? var o:Object ={a:1,b:2,c:3}; for each(var oo:String in o)trace(oo); trace("---"); delete o.a; for each(oo in o)trace(oo);
mySoundっていうサウンドオブジェクトがあって外部から曲流してるとき mySound.stop();で曲とめれんのはいいけど、最初にもどしてストップさせるのってどうすりゃいいの mysound.start(0,1);の直後にmySound.stop();でいい? なんかもっとそれ用にメソッドとかありそうなきがするんだけど
981 :
Now_loading...774KB :2009/01/09(金) 23:59:48 ID:ec/4EHp7
初めて質問させていただきます。
AS3.0です。
ttp://hakuhin.hp.infoseek.co.jp/main/as3/loader.html#LOADER_01 を使って、外部ファイルを読み込むまではいいのですが、
BGMが再生されるswfを読み込んだ際、別のものを読み込んだ時も再生されっぱなしになります。
なので別の外部ファイルを読み込んだ際、前に読み込んだものを完全に停止、もしくは破棄するには
どうしたらいいでしょうか?
close()は読み込みが完了すると使えませんし、
unload()はやるとエラーが出ます。
助言よろしくお願いします。
環境:WinXP 使用ソフト:Flash CS3 Pro
982 :
971 :2009/01/10(土) 14:49:05 ID:swhbTV9t
>>972 すいません、レスが遅くなりました。エラー箇所はデバッグモードで実行しましたが
場所は特定できませんでした。とりあえず下記の表示になります。
Error #2044: ハンドルされていない IOErrorEvent : text=Error #2124: 読み込まれたファイルの形式が不明です。
お教え頂いた、"ioError"はどこで使えば良いのでしょうか?
stream.addEventListener(ProgressEvent.PROGRESS, progressHandler);
↓
stream.addEventListener("ioError", progressHandler);
の変更でしょうか?
あと、
> imageDataへの追加をprogressイベントでしかやっていないが、completeイベントでもやるべきだ。
の意味が分かりません。event.target.readBytes() をcompleteHandler内でも行うということでしょうか?
実際にこの中でreadBytes()しましたが、何も変化はありませんでした。
>>982 >>971 のコードで気になるのは、completeHandler内の、
loader.loadBytes(imageData); ←これ
streamで読み込んでるのに、loaderってどっから出てきてるの?
984 :
983 :2009/01/10(土) 16:03:03 ID:VXQ5mdQe
985 :
983 :2009/01/10(土) 16:20:57 ID:VXQ5mdQe
>>982 Loaderがサポートするのは、
SWF、GIF、JPEG、PNG、ということらしい。
吊ってくる。
ASで例えばAというmcをstage.addChild(A)して、 さらにBというmcをA.addchild(B)した場合、 Aをstage.removeChild(A)して、さらにA = new C() as MovieClipとして 新しく初期化する場合、 A.removeChild(B)は実行する必要がありますか? わかりづらくてすいません。
>>986 他からの参照が無ければ必要はない(GC対象になる)が非活性化は必須
ありがとうございます。それが知りたかったのです。
989 :
Now_loading...774KB :2009/01/10(土) 19:47:39 ID:lYK0lpxu
使用ソフト:Flash 8 (AS2) OS:Windows Vista 64bit ある特定のキー(今回は↓キー)が押されたときに、MC内のSEを鳴らそうと思って 適当に"sound_mc"という名前のMCを作って、その中にSE(同期:ストリーミング)を入れました sound_mcには on (keyPress "<Down>") { sound_mc.play(); } と入れて、↓キーが押されたときに、sound_mcの内部で再生するようにしました SEを配置したレイヤーの最初と最後にはthis.stop();を入れて、勝手に流れないように制御しました 以上のようにしたのですが再生されません 何方か助けてください
>>989 on(){}内にtrace()いれてボタンが生きてるか確認。
sound_mcの2フレーム目にtrace()入れて動いてるか確認。
SEのファイルをルートに置いてちゃんと鳴るか試す。
ストリーミングの場合sound_mc内のフレームは音声ファイルの再生させる長さ分のフレームが必要、
1フレームじゃ駄目。
こんなところかな。
あ、ごめん、ボタンじゃないのか Mcに書いたならthis.play()にしなくちゃ。
>>990-991 どうもです!どうにか音がなりました!
ただ、「ぴんぽーん」って効果音だとしたら、今は↓キー連打しても「ぴんぽーん、ぴんぽーん」って感じなんですけど
これを↓キー連打したら「ぴぴぴぴぴぴぴひぴぴぴ…」みたいな感じに、一回目の効果音がなり終わる前に、
すぐ二回目の効果音を鳴らす事はActionScriptでは出来ませんかね?
すみません 自己解決しましたo...rz お騒がせ&スレ汚し申し訳ないです;
>>992 押したらサウンドをstop()してからplay()とか?
995 :
972 :2009/01/10(土) 21:09:12 ID:E5kd3Lki
>>982 >stream.addEventListener("ioError", progressHandler);
うへぇ。URLStreamとかLoaderのリファレンスくらい読みなさい。
stream.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
function ioErrorHandler(event:IOErrorEvent):void { trace("ioError: " + event); }
>の意味が分かりません。event.target.readBytes() をcompleteHandler内でも行うということでしょうか?
そう。まだreadBytes()してないデータが残ってる場合があるから。
function completeHandler(event:Event):void {
if (event.target.bytesAvailable) {
event.target.readBytes(imageData, imageData.length);
}
// もうこれで確実に全バイトがimageDataに取り込まれる。あとは好きなようにいじる
...
}
>実際にこの中でreadBytes()しましたが、何も変化はありませんでした。
completeでもデータが残っている「場合がある」のであって今回はそうではなかったんだろう。
ところで
>>983-985 の指摘がビンゴっぽい。エラーを吐いたのはLoaderかね。エラーメッセージの内容と
もつじつまがあうし。コードをよく把握してなかったが、たしかにLoaderにテキスト与えても意味ないよな。
何をしたいのかな。読み込んだテキストファイルの内容を文字列として取得したいのか?
なら、completeHandlerでloader.loadBytes()じゃなくて
var str:String = imageData.readMultiByte(imageData.length, "shift-jis");
クラスや関数の使い方が分からないときはまずリファレンスを一読。サンプルもついてるぞ!
環境:WinXP FlashCS3 AS3.0 Loaderで呼び出したファイルを複製しBackGround(MovieClip)に入れ、 その一つ一つにEventListenerをつけたいと考えています。 実行したところaddEventListenerした行でERROR#1010が出てしまいます。 CopyObjectにaddEventListenerした後、addChildで格納しても同じエラーでした。 下記のforを実行しているのは別のMouseEventの関数の中です。 どのようにしたらエラー回避して、addEventListenerすることができるでしょうか よろしくお願いします for(var i=0;i<3;i++){ var CopyObject=new Array(); CopyObject[i]=new Object(); CopyObject[i]=FileLoad;// FileLoadはファイルを呼び出したLoader BackGround.addChild(CopyObject[i]); BackGround.getChildAt(BackGround.numChildren-1).name=String('CopyObject['+i+']'); BackGround.CopyObject[i].addEventListener(Event.ENTER_FRAME,MoveCopyObject); // MoveCopyObjectはローカルで定義した関数 }
BackGroundにCopyObjectというプロパティがないから7行目のBackGround.CopyObject[i] が未定義プロパティへのアクセスでエラーになったんだろう。正しくはこうか? BackGround.CopyObject = new Array(3); for (var i = 0; i < 3; i++) { var obj = ...; // FileLoad? 複製したファイル? obj.name = "CopyObject[" + i + "]"; obj.addEventListener(Event.ENTER_FRAME, MoveCopyObject); BackGround.addChild(obj); BackGround.CopyObject[i] = obj; }
998 :
Now_loading...774KB :2009/01/11(日) 00:58:55 ID:Bg4qWwLv
埋め
999 :
Now_loading...774KB :2009/01/11(日) 01:11:46 ID:Bg4qWwLv
埋めどす
1000 :
996 :2009/01/11(日) 01:30:48 ID:IcFQ/UMi
>>997 ありがとうございます。無事に動作しました。
>BackGroundにCopyObjectというプロパティがないから
子Objectに追加することはプロパティの生成にはならないんですね
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。