- ベストアンサー
FLASH CS5でnow loadingでランダム再生を読み込みたい
- FLASH CS5で10枚の画像を切り替えるアニメーションを作成したいです。
- 画像の切り替えは右と左のボタンを押すことで行われます。
- now loadingを使って全ての画像を読み込んでからアニメーションをスタートさせたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2です > ActionScriptのほうですが、確かに2.0になっています。 ご質問のスクリプトをActionScript 2.0 に書き直すと次のようになります。 ---------------------------- //再生停止 stop(); //毎フレーム時間で実行するイベントハンドラメソッドを定義 this.onEnterFrame = function():Void { // //変数 per にロードされたパーセントを取得 var per:Number = this.loaderInfo.bytesLoaded/this.loaderInfo.bytesTotal*100; // //もしロードパーセンテージが 100 に達すれば if (per>=100) { //登録したイベントハンドラメソッドを削除 delete this.onEnterFrame; //変数 rnd_num に 0以上1未満 のランダムな数を代入 var rnd_num:Number = Math.random(); if (rnd_num<10/100) { gotoAndPlay(2); } else if (rnd_num<20/100) { gotoAndPlay(8); } else if (rnd_num<30/100) { gotoAndPlay(14); } else if (rnd_num<40/100) { gotoAndPlay(20); } else if (rnd_num<50/100) { gotoAndPlay(26); } else if (rnd_num<60/100) { gotoAndPlay(32); } else if (rnd_num<70/100) { gotoAndPlay(38); } else if (rnd_num<80/100) { gotoAndPlay(44); } else if (rnd_num<90/100) { gotoAndPlay(50); } else { gotoAndPlay(57); } } }; ---------------------------- ※実際は else if (rnd_num<20/100) や else if (rnd_num<30/100) のように 10ずつ上がるのかどうかは知りませんが。 > 3.0は進化なのでしょうか? 一応は進化のようですよ。 私のイメージですが, 進化したというかキメが細かくなったという感じがします。 例えば 「ハワイに行く」 という行動をするとします。 ActionScript 2.0 までは 飛行機に乗って「ハワイへ行け」 という動作命令で済んでいたような感じに思います。 しかし ActionScript 3.0 では 「飛行機に乗ってから命令する」というとんでもないことはできなくなり, 必ずチケット売り場でチケットを買わなければならず また航空会社やエコノミーやビジネスなどのコースの指定まで必要になった という感じがします。 つまり ActionScript 3.0 では 手続きが多くなって気軽にハワイに行けなくなった感じです。 しかし手続きが多い分, 好きな航空会社を選べたり機内食を選べたりなどなど, キメ細かい指示ができるようになった感じがします。 そんな感じではないでしょうか。 ニーズが多様化しているので その分 色々な分岐(分岐の選択) が必要になったということだと思います。 ある意味 いちいちいちいち命令しないとならなくなったので Flash 君 はバカ に退化してしまったようにも思えます。 しかし いちいちいちいちの命令に対応できるようになったので Flash 君 は賢く進化したようにも思えます。
その他の回答 (3)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
すみません,#3 です。 //変数 per にロードされたパーセントを取得 var per:Number = this.loaderInfo.bytesLoaded/this.loaderInfo.bytesTotal*100; #3で書いた↑これ間違ってますね。 ActionScript 3.0 のまんまでした。 次のように訂正させていただきます↓。 //変数 per にロードされたパーセントを取得 var per:Number = this.getBytesLoaded()/this.getBytesTotal()*100;
- BlurFiltan
- ベストアンサー率91% (1611/1754)
ご質問より引用 > どこか間違っている箇所はあるのでしょうか? > 教えてください。 内容は「かなり変」ですが ActionScript 3.0 の文法的には変ではありません。 すなわち ActionScript 3.0 のパブリッシュ設定では エラーは出ないと思います。 ※内容が「かなり変」な点は #1 の方の書いていらっしゃるような点と ご質問のスクリプトではランダムでとんな数が出ようとも フレーム2 もしくは フレーム57 にしか行かないということです。 ↑エラーが出なくなって動作するようになってから じっくり考えてみてください。 #1の方への補足より引用 > function goRnandom(evt:Event):void { > ここが毎回ひっかかるみたいです。 あの...,ですね.......。 「ファイル」→「パブリッシュ設定」で 「Flash」タブを選択すると スクリプト の設定が ActionScript 2.0 または 1.0 になってませんか? ご質問で書かれていらっしゃるスクリプトは ActionScript 3.0 ですよ。 また #1 の方が書いてくださっている回答も ActionScript 3.0 であることが大前提になっています。 パブリッシュ設定をご確認ください。
補足
ありがとうございます。 ActionScriptのほうですが、確かに2.0になっています。 3.0だとオブジェクトにコードがかけない ボタンインスタンスまたは MovieClip インスタンスのアクションはサポートされていません。オブジェクトインスタンスのすべてのスクリプトは無視されます。 など作り的に無効な物が多すぎます。 3.0は進化なのでしょうか?今迄2.0で操作していた私には3.0が使いづらすぎます またこの件には関係ないのですがmacromediaの8からadobeCS5に移行した際にもすごい違和感を感じました。 モーショントゥイーンの仕様が変わり過ぎです。 それでもやはり新しいソフト、新しいスクリプトは使いやすく、より良いものに進化しているんですよね本当は。 僕が使いこなせないだけで。
- H240S18B73
- ベストアンサー率65% (190/288)
普段そういう書き方しないから定かではないですが リスナー関数の中のthisはスクリプトが書かれているところの参照に ならないとか、関数の中で自分を参照することはできないとか そんなんじゃないでしょうか this.removeEventListener(Event.ENTER_FRAME, goRnandom); ↓ evt.target.revemoveEvetListener(evt.type,arguments.callee) その他のthisも同じくevt.targetに あと、読み込み完了したらランダムなフレームに gotoAndPlayするのはもうちょっとスマートなやり方がある気がします (というかこれでは1割2、9割57、それ以外にはならないと思うんですが?) もし開始フレームは2,8,14....のいずれかでないといけないとしても gotoAndPlay([2,8,14,20,26,32,38,44,50,57][Math.floor(Math.random()*10)]) とか
補足
ありがとうございます。 上のように変更し thisを全てevt.targetにして gotoandplayも上のようにしましたがダメでした。 元の時もそうなんだんですが、 function goRnandom(evt:Event):void { ここが毎回ひっかかるみたいです。 「クラスまたはインターフェイス'Event'はロードできませんでした」 と表示されます。 アクションスクリプトほぼ初心者なので、まったくわかりません。
お礼
できました!! ありがとうございます!! 今後の事もあるので、FLASH CS5の仕様についていく必要がありますね。 ActionScript3.0もそうですが、 知識があれば、使えるものだと思うので、要勉強です。 このたびは有り難う御座いました。