tests: Add tests for AS3 gotos during `enterFrame`, `frameConstructed`, and/or `exitFrame`

This commit is contained in:
David Wendt 2022-01-25 23:29:16 -05:00 committed by kmeisthax
parent c10417ddb8
commit 4d3788bfe1
16 changed files with 621 additions and 0 deletions

View File

@ -373,9 +373,12 @@ swf_tests! {
(as3_movieclip_dispatchevent_selfadd, "avm2/movieclip_dispatchevent_selfadd", 1), (as3_movieclip_dispatchevent_selfadd, "avm2/movieclip_dispatchevent_selfadd", 1),
(as3_movieclip_dispatchevent_target, "avm2/movieclip_dispatchevent_target", 1), (as3_movieclip_dispatchevent_target, "avm2/movieclip_dispatchevent_target", 1),
(as3_movieclip_dispatchevent, "avm2/movieclip_dispatchevent", 1), (as3_movieclip_dispatchevent, "avm2/movieclip_dispatchevent", 1),
(as3_movieclip_displayevents_constructframegoto, "avm2/movieclip_displayevents_constructframegoto", 12),
(as3_movieclip_displayevents_constructframeplay, "avm2/movieclip_displayevents_constructframeplay", 6), (as3_movieclip_displayevents_constructframeplay, "avm2/movieclip_displayevents_constructframeplay", 6),
(as3_movieclip_displayevents_dblhandler, "avm2/movieclip_displayevents_dblhandler", 4), (as3_movieclip_displayevents_dblhandler, "avm2/movieclip_displayevents_dblhandler", 4),
(as3_movieclip_displayevents_enterframegoto, "avm2/movieclip_displayevents_enterframegoto", 12),
(as3_movieclip_displayevents_enterframeplay, "avm2/movieclip_displayevents_enterframeplay", 6), (as3_movieclip_displayevents_enterframeplay, "avm2/movieclip_displayevents_enterframeplay", 6),
(as3_movieclip_displayevents_exitframegoto, "avm2/movieclip_displayevents_exitframegoto", 12),
(as3_movieclip_displayevents_exitframeplay, "avm2/movieclip_displayevents_exitframeplay", 6), (as3_movieclip_displayevents_exitframeplay, "avm2/movieclip_displayevents_exitframeplay", 6),
(as3_movieclip_displayevents_looping, "avm2/movieclip_displayevents_looping", 5), (as3_movieclip_displayevents_looping, "avm2/movieclip_displayevents_looping", 5),
(as3_movieclip_displayevents_timeline, "avm2/movieclip_displayevents_timeline", 7), (as3_movieclip_displayevents_timeline, "avm2/movieclip_displayevents_timeline", 7),

View File

@ -0,0 +1,37 @@
package {
import flash.display.MovieClip;
import flash.events.Event;
public class EventWatcher extends MovieClip {
public function EventWatcher() {
super();
this.setup();
}
function trace_event(event: Event) {
trace(this.name + " (frame " + this.currentFrame + "):" + event);
}
public function setup() {
this.addEventListener(Event.ENTER_FRAME, this.trace_event);
this.addEventListener(Event.EXIT_FRAME, this.trace_event);
this.addEventListener(Event.ADDED, this.trace_event);
this.addEventListener(Event.ADDED_TO_STAGE, this.trace_event);
this.addEventListener(Event.FRAME_CONSTRUCTED, this.trace_event);
this.addEventListener(Event.REMOVED, this.trace_event);
this.addEventListener(Event.REMOVED_FROM_STAGE, this.trace_event);
this.addEventListener(Event.RENDER, this.trace_event);
}
public function destroy() {
this.removeEventListener(Event.ENTER_FRAME, this.trace_event);
this.removeEventListener(Event.EXIT_FRAME, this.trace_event);
this.removeEventListener(Event.ADDED, this.trace_event);
this.removeEventListener(Event.ADDED_TO_STAGE, this.trace_event);
this.removeEventListener(Event.FRAME_CONSTRUCTED, this.trace_event);
this.removeEventListener(Event.REMOVED, this.trace_event);
this.removeEventListener(Event.REMOVED_FROM_STAGE, this.trace_event);
this.removeEventListener(Event.RENDER, this.trace_event);
}
}
}

View File

@ -0,0 +1,68 @@
package {
import flash.display.MovieClip;
import flash.events.Event;
public class MainTimeline extends EventWatcher {
var invocation = 0;
var destroy_me = false;
public function MainTimeline() {
super();
this.addEventListener(Event.FRAME_CONSTRUCTED, this.construct_frame_controller);
this.addEventListener(Event.EXIT_FRAME, this.exit_frame_controller);
}
function inspect() {
var children = "", child;
for (var i = 0; i < this.numChildren; i += 1) {
child = this.getChildAt(i);
if (child) {
children += child.name + " ";
}
}
trace("///Children:", children);
}
function construct_frame_controller(evt: Event) {
this.invocation++;
switch (this.invocation) {
default:
break;
case 3:
trace("/// (gotoAndStop(3) in frameConstructed...)");
this.gotoAndStop(3);
break;
case 5:
trace("/// (gotoAndPlay(1) in frameConstructed...)");
this.gotoAndPlay(1);
break;
case 9:
trace("/// (gotoAndPlay(3) in frameConstructed...)");
this.gotoAndPlay(3);
break;
case 13:
trace("/// (gotoAndStop(2) in frameConstructed...)");
this.gotoAndStop(2);
this.destroy_me = true;
break;
}
this.inspect();
}
function exit_frame_controller(evt: Event) {
this.inspect();
if (this.destroy_me) {
this.stop();
this.destroy();
this.removeEventListener(Event.FRAME_CONSTRUCTED, this.construct_frame_controller);
this.removeEventListener(Event.EXIT_FRAME, this.exit_frame_controller);
}
}
}
}

View File

@ -0,0 +1,110 @@
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=2]
root1 (frame 1):[Event type="addedToStage" bubbles=false cancelable=false eventPhase=2]
root1 (frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
//MainTimeline frame 1
// symbol_a frame 1
root1 (frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
//MainTimeline frame 2
// symbol_b frame 1
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndStop(3) in frameConstructed...)
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
//MainTimeline frame 3
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
///Children: symbol_b
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndPlay(1) in frameConstructed...)
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
//MainTimeline frame 1
// symbol_a frame 1
root1 (frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
///Children: symbol_a
root1 (frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
//MainTimeline frame 2
// symbol_b frame 1
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
//MainTimeline frame 3
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndPlay(3) in frameConstructed...)
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 3):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 3):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
//MainTimeline frame 3
// symbol_b frame 1
// symbol_a frame 1
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
///Children: symbol_b
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
//MainTimeline frame 1
// symbol_a frame 1
root1 (frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
//MainTimeline frame 2
// symbol_b frame 1
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndStop(2) in frameConstructed...)
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
//MainTimeline frame 2
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
///Children: symbol_b
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b

View File

@ -0,0 +1,37 @@
package {
import flash.display.MovieClip;
import flash.events.Event;
public class EventWatcher extends MovieClip {
public function EventWatcher() {
super();
this.setup();
}
function trace_event(event: Event) {
trace(this.name + " (frame " + this.currentFrame + "):" + event);
}
public function setup() {
this.addEventListener(Event.ENTER_FRAME, this.trace_event);
this.addEventListener(Event.EXIT_FRAME, this.trace_event);
this.addEventListener(Event.ADDED, this.trace_event);
this.addEventListener(Event.ADDED_TO_STAGE, this.trace_event);
this.addEventListener(Event.FRAME_CONSTRUCTED, this.trace_event);
this.addEventListener(Event.REMOVED, this.trace_event);
this.addEventListener(Event.REMOVED_FROM_STAGE, this.trace_event);
this.addEventListener(Event.RENDER, this.trace_event);
}
public function destroy() {
this.removeEventListener(Event.ENTER_FRAME, this.trace_event);
this.removeEventListener(Event.EXIT_FRAME, this.trace_event);
this.removeEventListener(Event.ADDED, this.trace_event);
this.removeEventListener(Event.ADDED_TO_STAGE, this.trace_event);
this.removeEventListener(Event.FRAME_CONSTRUCTED, this.trace_event);
this.removeEventListener(Event.REMOVED, this.trace_event);
this.removeEventListener(Event.REMOVED_FROM_STAGE, this.trace_event);
this.removeEventListener(Event.RENDER, this.trace_event);
}
}
}

View File

@ -0,0 +1,67 @@
package {
import flash.display.MovieClip;
import flash.events.Event;
public class MainTimeline extends EventWatcher {
var invocation = 0;
var destroy_me = false;
public function MainTimeline() {
super();
this.addEventListener(Event.ENTER_FRAME, this.enter_frame_controller);
this.addEventListener(Event.EXIT_FRAME, this.exit_frame_controller);
}
function inspect() {
var children = "", child;
for (var i = 0; i < this.numChildren; i += 1) {
child = this.getChildAt(i);
if (child) {
children += child.name + " ";
}
}
trace("///Children:", children);
}
function enter_frame_controller(evt: Event) {
switch (this.invocation) {
default:
break;
case 2:
trace("/// (gotoAndStop(3) in enterFrame...)");
this.gotoAndStop(3);
break;
case 4:
trace("/// (gotoAndPlay(1) in enterFrame...)");
this.gotoAndPlay(1);
break;
case 7:
trace("/// (gotoAndPlay(3) in enterFrame...)");
this.gotoAndPlay(3);
break;
case 10:
trace("/// (gotoAndStop(2) in enterFrame...)");
this.gotoAndStop(2);
this.destroy_me = true;
break;
}
this.invocation++;
this.inspect();
}
function exit_frame_controller(evt: Event) {
this.inspect();
if (this.destroy_me) {
this.stop();
this.destroy();
this.removeEventListener(Event.ENTER_FRAME, this.enter_frame_controller);
this.removeEventListener(Event.EXIT_FRAME, this.exit_frame_controller);
}
}
}
}

View File

@ -0,0 +1,116 @@
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=2]
root1 (frame 1):[Event type="addedToStage" bubbles=false cancelable=false eventPhase=2]
root1 (frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 1
// symbol_a frame 1
root1 (frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
///Children:
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 2
// symbol_b frame 1
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 3
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndStop(3) in enterFrame...)
root1 (frame 3):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 3):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 3
// symbol_b frame 1
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
///Children: symbol_b
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndPlay(1) in enterFrame...)
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 1
// symbol_a frame 1
root1 (frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
///Children: symbol_a
root1 (frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
root1 (frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
///Children:
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 2
// symbol_b frame 1
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 3
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndPlay(3) in enterFrame...)
root1 (frame 3):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 3):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 3
// symbol_b frame 1
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
///Children: symbol_b
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
///Children:
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 1
// symbol_a frame 1
root1 (frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
///Children:
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 2
// symbol_b frame 1
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndStop(2) in enterFrame...)
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 2
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
///Children: symbol_b
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b

View File

@ -0,0 +1,37 @@
package {
import flash.display.MovieClip;
import flash.events.Event;
public class EventWatcher extends MovieClip {
public function EventWatcher() {
super();
this.setup();
}
function trace_event(event: Event) {
trace(this.name + " (frame " + this.currentFrame + "):" + event);
}
public function setup() {
this.addEventListener(Event.ENTER_FRAME, this.trace_event);
this.addEventListener(Event.EXIT_FRAME, this.trace_event);
this.addEventListener(Event.ADDED, this.trace_event);
this.addEventListener(Event.ADDED_TO_STAGE, this.trace_event);
this.addEventListener(Event.FRAME_CONSTRUCTED, this.trace_event);
this.addEventListener(Event.REMOVED, this.trace_event);
this.addEventListener(Event.REMOVED_FROM_STAGE, this.trace_event);
this.addEventListener(Event.RENDER, this.trace_event);
}
public function destroy() {
this.removeEventListener(Event.ENTER_FRAME, this.trace_event);
this.removeEventListener(Event.EXIT_FRAME, this.trace_event);
this.removeEventListener(Event.ADDED, this.trace_event);
this.removeEventListener(Event.ADDED_TO_STAGE, this.trace_event);
this.removeEventListener(Event.FRAME_CONSTRUCTED, this.trace_event);
this.removeEventListener(Event.REMOVED, this.trace_event);
this.removeEventListener(Event.REMOVED_FROM_STAGE, this.trace_event);
this.removeEventListener(Event.RENDER, this.trace_event);
}
}
}

View File

@ -0,0 +1,62 @@
package {
import flash.display.MovieClip;
import flash.events.Event;
public class MainTimeline extends EventWatcher {
var invocation = 0;
var destroy_me = false;
public function MainTimeline() {
super();
this.addEventListener(Event.EXIT_FRAME, this.exit_frame_controller);
}
function inspect() {
var children = "", child;
for (var i = 0; i < this.numChildren; i += 1) {
child = this.getChildAt(i);
if (child) {
children += child.name + " ";
}
}
trace("///Children:", children);
}
function exit_frame_controller(evt: Event) {
this.invocation++;
switch (this.invocation) {
default:
break;
case 3:
trace("/// (gotoAndStop(3) in exitFrame...)");
this.gotoAndStop(3);
break;
case 5:
trace("/// (gotoAndPlay(1) in exitFrame...)");
this.gotoAndPlay(1);
break;
case 8:
trace("/// (gotoAndPlay(3) in exitFrame...)");
this.gotoAndPlay(3);
break;
case 12:
trace("/// (gotoAndStop(2) in exitFrame...)");
this.gotoAndStop(2);
this.destroy_me = true;
break;
}
this.inspect();
if (this.destroy_me) {
this.stop();
this.destroy();
this.removeEventListener(Event.EXIT_FRAME, this.exit_frame_controller);
}
}
}
}

View File

@ -0,0 +1,84 @@
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=2]
root1 (frame 1):[Event type="addedToStage" bubbles=false cancelable=false eventPhase=2]
root1 (frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 1
// symbol_a frame 1
root1 (frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 2
// symbol_b frame 1
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 3
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndStop(3) in exitFrame...)
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndPlay(1) in exitFrame...)
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 1
// symbol_a frame 1
root1 (frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
///Children: symbol_a
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 2
// symbol_b frame 1
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 3
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndPlay(3) in exitFrame...)
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
///Children: symbol_b
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 1):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 1
// symbol_a frame 1
root1 (frame 1):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_a
root1 (frame 1):[Event type="removed" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="added" bubbles=true cancelable=false eventPhase=3]
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 2
// symbol_b frame 1
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
root1 (frame 3):[Event type="enterFrame" bubbles=false cancelable=false eventPhase=2]
root1 (frame 3):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 3
root1 (frame 3):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
/// (gotoAndStop(2) in exitFrame...)
root1 (frame 2):[Event type="frameConstructed" bubbles=false cancelable=false eventPhase=2]
//MainTimeline frame 2
root1 (frame 2):[Event type="exitFrame" bubbles=false cancelable=false eventPhase=2]
///Children: symbol_b
///Children: symbol_b