flash基礎(アクションスクリプト)

WEB戦略

Flash

2011.11.23

flash基礎(アクションスクリプト)

●フレームに記述する
①そのフレームが表示されている間ずっとイベント発生させたい
(ただしMCやボタンのアクションスクリプトより優先されてしまうため他の制御がきかなくなる)
this.onEnterFrame = function() {
    this.staff.move_to = -800;
    this.results.move_to = 50;
    this.equipment.move_to = -800;
}


上記の方法だとフレームがそのフレームが表示されている間ずっとイベント発生してしまうので
MCやボタンのアクションスクリプトより優先されてしまうため他の制御がきかなくなる


そこで以下のように記述してやればフレームでonClipEvent(load)と同じ効果をだすことができる
(キーフレームを作成しそこに以下のように記述)

_root.staff_btn_mc._alpha = 100;
_root.results_btn_mc._alpha = 20;
_root.equipment_btn_mc._alpha = 20;

※よくある間違いとしてthisを使っている場合エラーが返ってくる
 フレームでthisは使えないので注意
良い例○
_root.staff_mc.onEnterFrame = function() {
_root.staff_mc._x = -800;
}

悪い例×
_root.staff_mc.onEnterFrame = function() {
_root.this._x = -800;
}

悪い例×
_root.staff_mc.onEnterFrame = function() {
_root.staff_mc.this._x = -800;
}

------------------------------------------
●対象となるムービークリップに記述する
①ムービークリップが表示されて一回のみイベント発生させたい時)
    onClipEvent(load){
    }
②そのフレームが表示されている間ずっとイベント発生させたい時
    onClipEvent(enterFrame){
    }


詳しくは以下を確認する

ActionScript は、ある出来事(イベント)が発生した時にスクリプトが実行される仕組みになっています。
onClipEvent に続く ( ) の中に書く load や enterFrame などは、
何のイベントが発生した時にスクリプトを実行させるかの指定です。


load イベントは、基本的には、ムービークリップがステージに登場した時に1度だけ発生します。
つまり、onClipEvent(load) で書いたスクリプトが実行されるのも、
ムービークリップが登場した時"1度だけ"ということになります。

一方 enterFrame イベントは、ムービークリップがステージに存在している間、
フレームレート分の1秒ごとに常に発生しています。
従って、onClipEvent(enterFrame) で書いたスクリプトはフレームレート分の1秒ごとに"繰り返し"実行されます。

このエントリーをはてなブックマークに追加

Page_Up