actionscript 3 - Why does my EVENT.ACTIVE trigger twice? -
when add event.activate listener project, , alt-tab away , project triggers twice.
edit: shaunhusain , seem have found cause of problem, although without solution. when running standalone player version 11+ event triggers 2x. when running standalone player version <11 or version in browser triggers 1x. appears there may bug in recent versions of flash player projector. i'm going nail down exact versions , report adobe , see happens. read , tried help!!
i want fire every time change focus, don't want fire twice every time change focus.
why this? doing wrong? what's best way prevent behavior?
it seems common question, google turned nothing.
code:
package { import flash.display.sprite; import flash.events.event; public class main extends sprite { public function main():void { if (stage) init(); else addeventlistener(event.added_to_stage, init); } private function init(e:event = null):void { removeeventlistener(event.added_to_stage, init); // entry point stage.addeventlistener(event.activate, test); } private function test(e:event):void { trace(e.target); } } } actual result:
[object stage] [object stage] desired result:
[object stage] it doesn't seem make difference whether add listener stage or else, behavior same.
the same thing happens event.deactivate. others such mouse work fine.
my goal pause game on event.deactivate , unpause on event.activate. problem when event fires twice, calls unpause function twice has unwanted consequences.
actionscript® 3.0 reference adobe® flash® platform says event:
dispatched when flash player or air application gains operating system focus , becomes active. event broadcast event, means dispatched eventdispatcher objects listener registered event. more information broadcast events, see displayobject class.
for me looks want prevent designed behavior? suppose designed fire every time change focus, or wrong? want accomplish? answer, based on wrote - can workaround removing listener after fired once:
private function test(e:event):void { stage.removeeventlistener(event.activate, test); trace(e.target); } but recommend write more why using , want accomplish if not satisfactory.
Comments
Post a Comment