« MTバージョンアップ | メイン | とみ川 »

ActionScript2.0

AS2.0を忘れないうちに復習。
class~extends MovieClipとしていろいろいじってみた。
ちょっと悩んだのがclassの中でfunction onEnterFrame(){}と定義した時。
必要なくなったらenterFrameを消したいのだがdeleteがどうしてもできない。
とりあえずonEnterFrame = null;でenterFrame内の処理はクリアできた。
deleteはできないのかなー?

とりあえずこんなもんを作ってみた。

トラックバック

このエントリーのトラックバックURL:
http://www2.infective.jp/mt/mtdayo-tb.cgi/12

コメント

おお!サクラじゃー!美しい。スチャ!って感じで花びらが広がるのがカッコイイです。

最初、花びら開くのfor文のループでやってたんだけどいっぺんに動かすと動作が重くなるんでenterFrameでタイミングずらしてみたら、ちょっと面白い動きになりました。春になるまでにもうちょっとカッコヨクしたいとこです。

ActionScript 2.0のクラスに定義したfunctionは、消せません。functionをプロパティと同じように、ダイナミックに設定・削除できるのは、ECMAScript(ECMA-262第3版仕様)の特徴です。

function myEnterFrame () {}として、onEnterFrame = myEnterFrame;で設定、delete onEnterFrmae;で削除する方法になるでしょう。

野中さんありがとうございます!
なるほど、「ダイナミックに設定・削除」ということを考えると
function onEnterFrame(){}
などとはやらないほうが良さそうですね。
コメントを参考に実験してみました。

class test1 extends MovieClip{
function test1(){
onPress = startEnterFrame;
onRelease = stopEnterFrame;
}
function myEnterFrame(){
trace("enterFrame実行中");
}

function startEnterFrame(){
onEnterFrame = myEnterFrame;
}
function stopEnterFrame(){
delete onEnterFrame;
}
}

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)