Flash AS3 イベントが発生してなくても最初から1回実行させておきたい関数があるときとか★
例えば、本来はa_btnかb_btnが押されたらjikkou関数が実行される。
_____________________________________________________
a_btn.addEventListener(MouseEvent.CLICK, jikkou);
b_btn.addEventListener(MouseEvent.CLICK, jikkou);
function jikkou(evt:Event):void{
var mc = evt.currentTarget;
//処理内容(==>aとbどちらを押したかをmcを使って処理)
}
_____________________________________________________
これをa_btnは押してないけど、あるタイミング(起動してすぐの状態とか)でa_btnが押されたことにしてjikkou関数を実行したいとすると、単純に動かしたい場所に
jikkou();
↑こう書くとエラーが出てしまう。それに、a_btnもb_btnもあるからどっちを押したのかわからない。どう書いたら良いかもわからなかった。ので調べた。
<方法1>
ポイントは①関数をふたつにわけること。②最初のjikkou関数でevtをとって、次のjikkou2関数ではnull(何もなし)にしておくこと。
_____________________________________________________
var oshita = a_btn;//a_btnを最初から入れておく
a_btn.addEventListener(MouseEvent.CLICK, jikkou);
b_btn.addEventListener(MouseEvent.CLICK, jikkou);
jikkou2();//ここで1度実行
function jikkou(evt:Event):void{
var mc = evt.currentTarget;
oshita = mc;//ローカル変数のmcをグローバル変数のoshitaに入れる。
jikkou2();
}
function jikkou2():void{
//処理内容(==>aとbどちらを押したかをoshitaを使って処理)
}
_____________________________________________________
<方法2>
ポイントは①dispatchEvent()ていうのを使う。②””でかこった名前は自分で自由につけてOK。2カ所とも同じ名前にしておくこと。③これだとふたつにわけたりしなくていいし短くていい!
_____________________________________________________
a_btn.addEventListener(MouseEvent.CLICK, jikkou);
b_btn.addEventListener(MouseEvent.CLICK, jikkou);
a_btn.addEventListener(“nandemook", jikkou);
a_btn.dispatchEvent(new MouseEvent("nandemook"));//ここで1度実行
function jikkou(evt:Event):void{
var mc = evt.currentTarget;
//処理内容(==>aとbどちらを押したかをmcを使って処理)
}
_____________________________________________________ なんかこんな感じで動いたと思う! おしまい!

















