onEnterFrameの魔力
MingでActionScriptを用い場合に注意が必要なことがあります。
分かりきったことの中に、結構落とし穴があものです。
今回、私が陥った 落とし穴、それは... onEnterFrameです。
Ming/actionscriptはnextFrame()はありますが、actionscriptは時間というものがないようです。
というのも
actionscriptの中に
while()
{
nextFrame();
}
としてみると、大変なことになります。やってみてください。
私は、nextFrame()が1ターン進めるのだから、問題ないだろうと思っていたのですが、
こんな使い方はないのですね。たぶん 自信はありませんが...
誰か私に教えてほしいのですが、多分私の予想が正しければ
現在私が用いているmovieclipはすべて 3フレームくらいしかないのでnextFrameしても
しょうがないと言うことなのだうか?
それとも、子のーどから実行されていくので、途中にループがあると他が動かないとか?
よく分からない、調べるのも面倒なので別の方法を用いることにしよう。
スクリプト?
スクリプトなんていうたいそうなものは作りませんし、作れませんが、少し考えて見ます。
命令文ひとつ見込むだけにしても、スクリプターは
空白を無視したり。警告をはっしたり。エラーを出したり大忙しです。
すべて、オブジェクトに置き換えるとしても、エラーや警告をいちいち検査すると
、実行速度が遅くなるのは明白です。
特にフラッシュなどはwebブラウザーに依存しているので、
できる限り負荷のかかる処理はない方が良いのとおもうのですが.....。
変数
入子もまだなのに変数を実装します。
あと、命令コマンドが増えたときのための辞書のようなものも必要になりますが...。
とりあえず、container(MC)が変数を所持することにします。
となると、気になるのが、スクリプト内での延命時間です。やはり
<Con></Con>の中だけとイトころでしょうか。
うーん、できることなら、連想配列などを宣言できるようにして、
保持するほうが良いのかもしれない。
あと 、関数などをつかえるようにすると、読み込む時間はどうなるんだろ、
import のようなものを作っても致命的なものにならないだろうか?
関数もcontainer(MC)の派生したもので問題ないと思うのですが。あと、参照渡しだとか
引数渡しだとか....。
作業
作業前のファイル
をいじる
<Var>mirage=0</Var>
とりあえず代入だけでも。
<Con>
<Var>kyoro = 1</Var>
<Con>
<Var>mirage = kyoro</Var>
</Con>
</Con>
上のを見ると、きちんと親まで、検索してあげないとだめなようです。
では、実装します。ここまで分かると 簡単ですね。〜〜
もちろん、thisとか parentだとか global だとか parent.parentだとかは
作りません。ごるんなさい。
あまりこってくるとcontainer自体に
パスを用いてアクセスできるようなものが必要になりそうです...。(?)
◎まずcontainerにvarを持たせる。
Contianer.php のなかを書きえ
new = function()
{
name++;
createEmptyMovieClip('container'+name,name);
this['container'+name].item = new Array();
this['container'+name].str ='';
this['container'+name].add = this.add;
this['container'+name].set = this.set;
this['container'+name].get = this.get;
this['container'+name].end = this.end;
this['container'+name].var = Array();
this['container'+name].setParent = this.setParent;
this['container'+name].getParent = this.getParent;
this['container'+name].getName = this.getName;
return this['container'+name];
};
◎いまのところ<Var>は代入だけしか持たないので、= で文を分ける
あとあとにしようかと思っていたのだが、宣言以外は、すべて別のMCに独立させることにする。
そして、とりあえずif文をなくしてしまおう。 まずは、Varを別のMCとして作成。
◎継承のようなことをする。
Containerの機能を使いまわします。作業前のソースを見ていただければ分かりますが、
containerの機能は、 命令と中身を読み込む機能があります、おまけとして?、
中身を表示してくれたります。 まだ 各種変数やイベントなどが出揃っていないので、
これから、さらに拡大していくMCだとおもわれます。
ということで継承もどきがひつようになりますね!!
new = function()
{
par = _parent.container.new();
par.plus = par.plus();
return par;
}
といった感じで、継承のもどきを実装していくことにしましょう。
だれか
kyoroはプログラムを始めてまだ間もないので、
プログラムがよくわかっていません。
できることなら、Mingはドキュメントが少ないので、
それらを補間するようなものや、ちょっとしたゲームだとかを
作れるよいのですが、まだまだ先の話になりそうです。
ですが、はずかしげなソースだとかを読めるようにしています。とても勇気がいりました。
将来、自分が見たときに趣があるとおもっています
(誰か指摘してくれる人がいることを期待していたりします、そんな暇人はいないような気がしますが〜〜)
とりあえず 30分くらいたった
今日はここまで、変数の機能を作成するまでは行かなかった。残念です。
あと、10日くらいで、課題と絵を仕上げなくてはならない。そして就職活動もそろそろしないとまずいです。
そして、卒研...
だれか、私を雇ってください〜〜。こんな私ですが....
戻る