トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     実行する順序を自在にあやつる
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
sunafu
Åê¹ÆNo.13637
投稿日時: 2004-12-25 15:56
新米
居住地:
投稿: 19
使用環境:
WinXP,FlashMX,秀丸
実行する順序を自在にあやつる
フレームアクションスクリプト
#include "debug.as"
 debug.asの中身
 this.onEnterFrame = function ()
 {
  testAction() //debug2.asにアクセス
 };

 ムービクリップ > フレームアクションスクリプト
  #include "debug2.as"
   debug2.asの中身
   function testAction()
   {
    trace ("実行");
   };

すいません、質問です。
順番的に実行されないというのは、わかっているつもりなんですが、
こういうことがやりたい場合、どういうつくりにしてあげればよいのでしょうか?

野中文雄
Åê¹ÆNo.13638
投稿日時: 2004-12-25 17:09
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 実行する順序を自在にあやつる
ご質問のポイントが、理解できません。

まず、問題の切分けをしましょう。

#includeステートメントは、その動作自体を問題にする場合を除いて、通常スクリプトの動作とは関係ありません。FlashはSWFの書出し時に、#includeステートメントを見つけると、指定された.asファイルを開いて、その内容のスクリプトをステートメントと置替えます。つまり、書出す前に.asファイルからコピーして、#includeステートメントに上書きペーストするようなものです。

したがって、SWFには#includeステートメントが存在しないことになります。SWFの動作は、純粋に(外部ファイルからペーストされる)外部スクリプトの内容に従います。

以下のスクリプトは、ターゲットパスが正しく、タイムラインにMovieClipインスタンスが存在すれば、問題なく動作するように思われます。もちろん、#includeステートメントを使ったとしても、動作には何の変わりもありません。
引用:
sunafuさんは書きました:
フレームアクションスクリプト
// フレームアクション
// MovieClipインスタンスmy_mcを配置
// #include "debug.as"
// debug.asの中身
this.onEnterFrame = function ()
{
    my_mc.testAction()  //debug2.asにアクセス
};

ムービクリップ > フレームアクションスクリプト
// MovieClip: my_mc
// フレームアクション
// 上記スクリプトを記述したタイムラインに配置
// #include "debug2.as"
// debug2.asの中身
function testAction()
{
    trace ("実行");
};

「順番的に」というのが、何の「順番」を意味しているのかわかりかねます。
引用:
順番的に実行されないというのは、わかっているつもりなんですが、
こういうことがやりたい場合、どういうつくりにしてあげればよいのでしょうか?


----------------
 

salvox
Åê¹ÆNo.13650
投稿日時: 2004-12-26 5:40
常連
居住地: 東京都
投稿: 73
使用環境:
Windows2000
FlashMX
テキストエディター:EmEditor
Re: 実行する順序を自在にあやつる
ど?も、Salvoxです。

順次…、確かに悩みますね。
多分、COBOL時代を懐かしむ世代でなければ、
『順次・分岐・反復』の順次を取り上げてるわけでもないしょう(笑)

これは、僕の推測ですが・・・
多分、sunafuさんが言いたいことは、『なぜ、動作しない?』ではなく、ASファイルにする際に、sunafuさんがよういた構造が、一般的なのかどうかを聞いてるのだと思うんですが・・・。

で、僕からなんですが、
経験上 this.onEnterFrameハンドラは、特殊な構造を除き、
なるべく、Flash内に直接書いた方が都合が良いです。
理由は、3ヶ月後の自分の為。

後から読んだ時にASファイルを開かずに済むし、『あれ、ここスレッドで動いてる?どっからコールされてんの?』って疑問をもたなくて済むから(自分のソースなのに)。

書き方としては、

testAction()関数を ASファイルで宣言し。

FLAファイル上では、this.onEnterFrame = this.testAction;

っと書くのが実作業上もっとも効率がイイ。

ASファイルの利点として『使いまわし』をする為なので、this.onEnterFrame をASファイルに書き、
宣言をFLAファイル内でやったんでは、別のFlashを組む際に
#include宣言だけじゃ動作しませんよね?
いちいち、昔のFLAを開き、どこかに書いてある分からない、testActionを探し、コピーし貼り付けないといけない。(面倒くせ???)、下手したらバグの元です。

関数宣言をASファイルにしたら、FlashならVer6以降で完全動作が期待できるし、実装側でonClipEvent(enterFrame)に書き直すことで、Ver4(関数仕様によりますが)仕様に早変わり。何より、後から見る人がtestActionの中身を知る必要がないんです。後からいじる人(もちろん自分も含む)が、いち早く知りたいのは、その動作がスレッドで行われてるかどうか。

プログラミングで、コメント文書けとか、関数仕様を残せとか、後から見た人のことを考えて書けってよく言われますが、あれの『後から見た人』って『未来の自分』なんですよ・・・(-- ;) いやマジデ!!3年前のプログラムなんて覚えてないから...。(覚えてたら、別分野でその記憶力を活かすことをお勧めします。記憶マスターになるべきです。)


----------------
(C)SalvoxStudioStation

sunafu
Åê¹ÆNo.13707
投稿日時: 2004-12-28 22:58
新米
居住地:
投稿: 19
使用環境:
WinXP,FlashMX,秀丸
Re: 実行する順序を自在にあやつる
どうもありがとうございます。

野中さん、申し訳ありません。
どうもかなり混乱していたようです(^^;)
あっさり解決しました。
順番的にうんぬんは忘れてください。

salvoxさんもありがとうございます。
大元のファイルが思ったりより複雑になって
(僕にとってはですが…^^;)
どうまとめたら、後で困らないのか、
悩んでいたところでした。
その手は、たしかによさそうですね(^^)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops