<button id="ptu4h"><acronym id="ptu4h"><input id="ptu4h"></input></acronym></button>

<tbody id="ptu4h"></tbody>

    <dd id="ptu4h"><center id="ptu4h"></center></dd><dd id="ptu4h"></dd><dd id="ptu4h"><track id="ptu4h"><video id="ptu4h"></video></track></dd>
  • 16素材
    您現在的位置:首頁 > 教程中心 > Flash教程

    stage監聽鍵盤事件被另外的swf加載后失效的解決方法

    if (stage) { 
    stage.addEventListener(KeyboardEvent.KEY_DOWN,mykeydown) 
    } else { 
    addEventListener(Event.ADDED_TO_STAGE, aaa); 

    function aaa(event:Event):void { 
    removeEventListener(Event.ADDED_TO_STAGE, aaa); 
    stage.addEventListener(KeyboardEvent.KEY_DOWN,mykeydown) 
    }  

    function mykeydown(evt:KeyboardEvent):void 

    ...... 

    /////////////////////////////

    很多時候,可視類初始化的時候,要用到stage屬性,則必須使用Event.ADDED_TO_STAGE事件,有的時候,連文檔類初始化時,也需要用到Event.ADDED_TO_STAGE,原因是這個swf將被其它的文件加載,如果直接在初始化函數內使用stage屬性,單獨發布是沒問題的,但聯調時就會發生問題。

    但是,文檔類初始化函數內的Event.ADDED_TO_STAGE,當這個swf被其他文件加載時,很有可能被觸發兩次,如果你將所有真正的初始化代碼都寫在Event.ADDED_TO_STAGE事件相應函數內,所有的可視化元素,將會被new出來兩份,所有的偵聽,將會有兩份...

    這個現象很隱蔽,往往發生了也不報錯,從表面上也看不出問題,但一旦發生,輕則降低機器性能,重則會發生很多靈異事件,例如明明把某個元素visible設成false了,但屏幕上還是能看到它,原因就是new出來東西,都將有兩份。

    Event.ADDED_TO_STAGE被廣播兩次的原因,可能是文檔類的特殊性造成的,它自己初始化的時候被觸發一次,被加載并顯示的時候再觸發一次。

    關鍵詞: stage監聽鍵盤

    相關素材

    聯系客服 加入QQ群
    素材中国