core: Allow clicking on a non-interactive AVM2 child of a Loader
This commit is contained in:
parent
b616f559e7
commit
51f004f171
|
@ -215,6 +215,9 @@ impl<'gc> TInteractiveObject<'gc> for LoaderDisplay<'gc> {
|
|||
return Avm2MousePick::Miss;
|
||||
}
|
||||
|
||||
let mut options = HitTestOptions::SKIP_INVISIBLE;
|
||||
options.set(HitTestOptions::SKIP_MASK, self.maskee().is_none());
|
||||
|
||||
// We have at most one child
|
||||
if let Some(child) = self.iter_render_list().next() {
|
||||
if let Some(int) = child.as_interactive() {
|
||||
|
@ -240,6 +243,12 @@ impl<'gc> TInteractiveObject<'gc> for LoaderDisplay<'gc> {
|
|||
return Avm2MousePick::Miss;
|
||||
}
|
||||
}
|
||||
} else if child.hit_test_shape(context, point, options) {
|
||||
if self.mouse_enabled() {
|
||||
return Avm2MousePick::Hit((*self).into());
|
||||
} else {
|
||||
return Avm2MousePick::PropagateToParent;
|
||||
}
|
||||
}
|
||||
}
|
||||
Avm2MousePick::Miss
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
package {
|
||||
|
||||
import flash.display.MovieClip;
|
||||
import flash.display.Shape;
|
||||
import flash.geom.Rectangle;
|
||||
import flash.net.URLRequest;
|
||||
import flash.events.MouseEvent;
|
||||
import flash.display.Loader;
|
||||
import flash.display.Sprite;
|
||||
|
||||
|
||||
public class Test extends MovieClip {
|
||||
|
||||
|
||||
public function Test() {
|
||||
var child = new Shape();
|
||||
child.graphics.beginFill(0xFF0000);
|
||||
child.graphics.drawRect(0, 0, 100, 100);
|
||||
child.graphics.endFill();
|
||||
this.addChild(child);
|
||||
|
||||
this.stage.addEventListener(MouseEvent.CLICK, function (e) {
|
||||
trace("Clicked at: " + e.stageX + " " + e.stageY + " on: " + e.target + " (" + e.target.name + ")");
|
||||
});
|
||||
|
||||
var loaderWrapper = new Sprite();
|
||||
loaderWrapper.name = "LoaderWrapper";
|
||||
|
||||
var firstLoader = new Loader();
|
||||
firstLoader.name = "firstLoader";
|
||||
firstLoader.load(new URLRequest("image.png"));
|
||||
loaderWrapper.addChild(firstLoader);
|
||||
|
||||
var secondLoader = new Loader();
|
||||
secondLoader.name = "secondLoader";
|
||||
secondLoader.load(new URLRequest("image.png"));
|
||||
secondLoader.y = 150;
|
||||
secondLoader.mouseEnabled = false;
|
||||
loaderWrapper.addChild(secondLoader);
|
||||
|
||||
var thirdLoader = new Loader();
|
||||
thirdLoader.name = "thirdLoader";
|
||||
thirdLoader.load(new URLRequest("image.png"));
|
||||
thirdLoader.y = 300;
|
||||
thirdLoader.mouseChildren = false;
|
||||
loaderWrapper.addChild(thirdLoader);
|
||||
|
||||
var fourthLoader = new Loader();
|
||||
fourthLoader.name = "fourthLoader";
|
||||
fourthLoader.load(new URLRequest("image.png"));
|
||||
fourthLoader.y = 450;
|
||||
fourthLoader.mouseEnabled = false;
|
||||
fourthLoader.mouseChildren = false;
|
||||
loaderWrapper.addChild(fourthLoader);
|
||||
|
||||
this.addChild(loaderWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 539 B |
|
@ -0,0 +1,72 @@
|
|||
[
|
||||
{
|
||||
"type": "MouseMove",
|
||||
"pos": [19, 29]
|
||||
},
|
||||
{
|
||||
"type": "MouseDown",
|
||||
"pos": [19, 29],
|
||||
"btn": "Left"
|
||||
},
|
||||
{
|
||||
"type": "MouseUp",
|
||||
"pos": [19, 29],
|
||||
"btn": "Left"
|
||||
},
|
||||
{
|
||||
"type": "MouseMove",
|
||||
"pos": [71, 26]
|
||||
},
|
||||
{
|
||||
"type": "MouseDown",
|
||||
"pos": [71, 26],
|
||||
"btn": "Left"
|
||||
},
|
||||
{
|
||||
"type": "MouseUp",
|
||||
"pos": [71, 26],
|
||||
"btn": "Left"
|
||||
},
|
||||
{
|
||||
"type": "MouseMove",
|
||||
"pos": [19, 175]
|
||||
},
|
||||
{
|
||||
"type": "MouseDown",
|
||||
"pos": [19, 175],
|
||||
"btn": "Left"
|
||||
},
|
||||
{
|
||||
"type": "MouseUp",
|
||||
"pos": [19, 175],
|
||||
"btn": "Left"
|
||||
},
|
||||
{
|
||||
"type": "MouseMove",
|
||||
"pos": [20, 324]
|
||||
},
|
||||
{
|
||||
"type": "MouseDown",
|
||||
"pos": [20, 324],
|
||||
"btn": "Left"
|
||||
},
|
||||
{
|
||||
"type": "MouseUp",
|
||||
"pos": [20, 324],
|
||||
"btn": "Left"
|
||||
},
|
||||
{
|
||||
"type": "MouseMove",
|
||||
"pos": [25, 477]
|
||||
},
|
||||
{
|
||||
"type": "MouseDown",
|
||||
"pos": [25, 477],
|
||||
"btn": "Left"
|
||||
},
|
||||
{
|
||||
"type": "MouseUp",
|
||||
"pos": [25, 477],
|
||||
"btn": "Left"
|
||||
}
|
||||
]
|
BIN
tests/tests/swfs/avm2/loader_noninteractive_try_click_root/loadable.swf
vendored
Executable file
BIN
tests/tests/swfs/avm2/loader_noninteractive_try_click_root/loadable.swf
vendored
Executable file
Binary file not shown.
|
@ -0,0 +1,5 @@
|
|||
Clicked at: 19 29 on: [object Loader] (firstLoader)
|
||||
Clicked at: 71 26 on: [object Stage] (null)
|
||||
Clicked at: 19 175 on: [object Sprite] (LoaderWrapper)
|
||||
Clicked at: 20 324 on: [object Loader] (thirdLoader)
|
||||
Clicked at: 25 477 on: [object Sprite] (LoaderWrapper)
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
num_ticks = 1
|
Loading…
Reference in New Issue