avm2: Correctly apply 'skip_next_enter_frame' to Loader
We were missing the initial 'set_skip_next_enter_frame(true)' call, and we weren't properly clearing it in `enter_frame`. Loaders appear to have the same behavior as MovieClips. This makes us correctly run the first framescript for the loaded SWF.
This commit is contained in:
parent
33f585fa6c
commit
ba88b52167
|
@ -117,6 +117,8 @@ impl<'gc> TDisplayObject<'gc> for LoaderDisplay<'gc> {
|
|||
}
|
||||
child.enter_frame(context);
|
||||
}
|
||||
self.base_mut(context.gc_context)
|
||||
.set_skip_next_enter_frame(false);
|
||||
}
|
||||
|
||||
fn construct_frame(&self, context: &mut UpdateContext<'_, 'gc>) {
|
||||
|
|
|
@ -640,6 +640,12 @@ impl<'gc> Loader<'gc> {
|
|||
// 'this.parent == null' and 'this.stage == null'
|
||||
mc.post_instantiation(context, None, Instantiator::Movie, false);
|
||||
catchup_display_object_to_frame(context, mc.into());
|
||||
// Movie clips created from ActionScript (including from a Loader) skip the next enterFrame,
|
||||
// and consequently are observed to have their currentFrame lag one
|
||||
// frame behind objects placed by the timeline (even if they were
|
||||
// both placed in the same frame to begin with).
|
||||
mc.base_mut(context.gc_context)
|
||||
.set_skip_next_enter_frame(true);
|
||||
|
||||
if let Some(MovieLoaderEventHandler::Avm2LoaderInfo(loader_info)) = event_handler {
|
||||
let mut activation = Avm2Activation::from_nothing(context.reborrow());
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 6.2 KiB |
Binary file not shown.
Binary file not shown.
|
@ -4,10 +4,14 @@ loader.contentLoaderInfo.bytesLoaded = 0
|
|||
loader.contentLoaderInfo.bytesTotal = 0
|
||||
loader.contentLoaderInfo.bytes = null
|
||||
loader.contentLoaderInfo.url = null
|
||||
Event [ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=0 bytesTotal=674]: loader.numChildren = 0, loader.content = null, loader.contentLoaderInfo.bytesLoaded = 0, loader.contentLoaderInfo.bytesTotal = 674, loader.contentLoaderInfo.url = null
|
||||
Event [ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=674 bytesTotal=674]: loader.numChildren = 0, loader.content = null, loader.contentLoaderInfo.bytesLoaded = 674, loader.contentLoaderInfo.bytesTotal = 674, loader.contentLoaderInfo.url = null
|
||||
Event [ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=0 bytesTotal=738]: loader.numChildren = 0, loader.content = null, loader.contentLoaderInfo.bytesLoaded = 0, loader.contentLoaderInfo.bytesTotal = 738, loader.contentLoaderInfo.url = null
|
||||
Event [ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=738 bytesTotal=738]: loader.numChildren = 0, loader.content = null, loader.contentLoaderInfo.bytesLoaded = 738, loader.contentLoaderInfo.bytesTotal = 738, loader.contentLoaderInfo.url = null
|
||||
Framescript frame 1
|
||||
Hello from loaded SWF!
|
||||
loader.contentLoaderInfo === loader.content.loaderInfo : true
|
||||
loader.contentLoaderInfo.content === loader.content : true
|
||||
Event [Event type="init" bubbles=false cancelable=false eventPhase=2]: loader.numChildren = 1, loader.content = [object LoadableMainTimeline], loader.contentLoaderInfo.bytesLoaded = 674, loader.contentLoaderInfo.bytesTotal = 674, loader.contentLoaderInfo.url = file:///
|
||||
Event [Event type="complete" bubbles=false cancelable=false eventPhase=2]: loader.numChildren = 1, loader.content = [object LoadableMainTimeline], loader.contentLoaderInfo.bytesLoaded = 674, loader.contentLoaderInfo.bytesTotal = 674, loader.contentLoaderInfo.url = file:///
|
||||
Event [Event type="init" bubbles=false cancelable=false eventPhase=2]: loader.numChildren = 1, loader.content = [object LoadableMainTimeline], loader.contentLoaderInfo.bytesLoaded = 738, loader.contentLoaderInfo.bytesTotal = 738, loader.contentLoaderInfo.url = file:///
|
||||
Event [Event type="complete" bubbles=false cancelable=false eventPhase=2]: loader.numChildren = 1, loader.content = [object LoadableMainTimeline], loader.contentLoaderInfo.bytesLoaded = 738, loader.contentLoaderInfo.bytesTotal = 738, loader.contentLoaderInfo.url = file:///
|
||||
Framescript frame 2
|
||||
Framescript frame 1
|
||||
Hello from loaded SWF!
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,7 +1,7 @@
|
|||
num_frames = 3
|
||||
num_frames = 4
|
||||
|
||||
[image_comparison]
|
||||
tolerance = 0
|
||||
|
||||
[player_options]
|
||||
with_renderer = { optional = true, sample_count = 1 }
|
||||
with_renderer = { optional = true, sample_count = 1 }
|
||||
|
|
Loading…
Reference in New Issue