tests: Add avm2/focus_events_mouse_same_object test
This test verifies the behavior of focus-related events when changing focus to the same object using mouse.
This commit is contained in:
parent
dd4b859268
commit
be903d2cd5
|
@ -0,0 +1,76 @@
|
|||
package {
|
||||
|
||||
import flash.display.InteractiveObject;
|
||||
import flash.display.MovieClip;
|
||||
import flash.display.Sprite;
|
||||
import flash.events.Event;
|
||||
import flash.events.KeyboardEvent;
|
||||
import flash.events.MouseEvent;
|
||||
|
||||
[SWF(width="200", height="200")]
|
||||
public class Test extends MovieClip {
|
||||
private var spriteA: Sprite;
|
||||
|
||||
private var preventDefault: Boolean = false;
|
||||
|
||||
public function Test() {
|
||||
super();
|
||||
|
||||
spriteA = newSprite();
|
||||
spriteA.name = "spriteA";
|
||||
spriteA.x = 0;
|
||||
spriteA.y = 100;
|
||||
|
||||
spriteA.tabEnabled = true;
|
||||
spriteA.tabIndex = 1;
|
||||
|
||||
stage.addChild(spriteA);
|
||||
|
||||
stage.addEventListener("keyDown", function(evt:KeyboardEvent):void {
|
||||
if (evt.keyCode == 27) {
|
||||
trace("Escape pressed");
|
||||
preventDefault = true;
|
||||
stage.focus = null;
|
||||
}
|
||||
});
|
||||
|
||||
function eventListener(obj: InteractiveObject): Function {
|
||||
return function(evt: Event): void {
|
||||
var str;
|
||||
if (evt is MouseEvent) {
|
||||
str = evt.formatToString(
|
||||
"MouseEvent", "type", "cancelable", "eventPhase",
|
||||
"relatedObject", "ctrlKey", "altKey", "shiftKey");
|
||||
} else {
|
||||
str = evt.toString();
|
||||
}
|
||||
trace(" " + obj.name + ", " + evt.target.name + ": " + str);
|
||||
if (preventDefault && obj != stage) {
|
||||
evt.preventDefault();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for each (var obj: InteractiveObject in [spriteA, stage]) {
|
||||
obj.addEventListener("focusIn", eventListener(obj));
|
||||
obj.addEventListener("focusOut", eventListener(obj));
|
||||
obj.addEventListener("mouseDown", eventListener(obj));
|
||||
obj.addEventListener("mouseUp", eventListener(obj));
|
||||
obj.addEventListener("click", eventListener(obj));
|
||||
obj.addEventListener("mouseFocusChange", eventListener(obj));
|
||||
obj.addEventListener("keyFocusChange", eventListener(obj));
|
||||
obj.addEventListener("rollOut", eventListener(obj));
|
||||
obj.addEventListener("rollOver", eventListener(obj));
|
||||
obj.addEventListener("mouseOver", eventListener(obj));
|
||||
}
|
||||
}
|
||||
|
||||
private function newSprite(): Sprite {
|
||||
var s:Sprite = new Sprite();
|
||||
s.graphics.beginFill(0x00FFFF);
|
||||
s.graphics.drawRect(0, 0, 100, 100);
|
||||
s.graphics.endFill();
|
||||
return s;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
[
|
||||
{ "type": "MouseMove", "pos": [1, 101] },
|
||||
{ "type": "MouseDown", "pos": [1, 101], "btn": "Left" },
|
||||
{ "type": "MouseUp", "pos": [1, 101], "btn": "Left" },
|
||||
{ "type": "MouseMove", "pos": [1, 101] },
|
||||
{ "type": "MouseDown", "pos": [1, 101], "btn": "Left" },
|
||||
{ "type": "MouseUp", "pos": [1, 101], "btn": "Left" },
|
||||
{ "type": "KeyDown", "key_code": 27 },
|
||||
{ "type": "KeyUp", "key_code": 27 },
|
||||
{ "type": "MouseMove", "pos": [1, 101] },
|
||||
{ "type": "MouseDown", "pos": [1, 101], "btn": "Left" },
|
||||
{ "type": "MouseUp", "pos": [1, 101], "btn": "Left" },
|
||||
{ "type": "MouseMove", "pos": [1, 101] },
|
||||
{ "type": "MouseDown", "pos": [1, 101], "btn": "Left" },
|
||||
{ "type": "MouseUp", "pos": [1, 101], "btn": "Left" },
|
||||
{ "type": "KeyDown", "key_code": 27 },
|
||||
{ "type": "KeyUp", "key_code": 27 },
|
||||
{ "type": "MouseMove", "pos": [1, 1] },
|
||||
{ "type": "Wait" }
|
||||
]
|
|
@ -0,0 +1,35 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
coord_map = {
|
||||
'void': [1, 1],
|
||||
'spriteA': [1, 101],
|
||||
'mc1A': [101, 101],
|
||||
'mc2A': [201, 101],
|
||||
'mc3A': [301, 101],
|
||||
'textA': [401, 101],
|
||||
'buttonA': [501, 101],
|
||||
}
|
||||
|
||||
click_seq = [
|
||||
'spriteA',
|
||||
'spriteA',
|
||||
'esc',
|
||||
'spriteA',
|
||||
'spriteA',
|
||||
'esc',
|
||||
]
|
||||
|
||||
print('[')
|
||||
|
||||
for obj in click_seq:
|
||||
if obj == 'esc':
|
||||
print(f' {{ "type": "KeyDown", "key_code": 27 }},')
|
||||
print(f' {{ "type": "KeyUp", "key_code": 27 }},')
|
||||
continue
|
||||
pos = coord_map[obj]
|
||||
print(f' {{ "type": "MouseMove", "pos": {pos} }},')
|
||||
print(f' {{ "type": "MouseDown", "pos": {pos}, "btn": "Left" }},')
|
||||
print(f' {{ "type": "MouseUp", "pos": {pos}, "btn": "Left" }},')
|
||||
|
||||
print(f' {{ "type": "Wait" }}')
|
||||
print(']')
|
|
@ -0,0 +1,40 @@
|
|||
spriteA, spriteA: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
spriteA, spriteA: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, null: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object Sprite] shiftKey=false keyCode=0]
|
||||
spriteA, spriteA: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=null shiftKey=false keyCode=0]
|
||||
null, spriteA: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=null shiftKey=false keyCode=0]
|
||||
spriteA, spriteA: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
spriteA, spriteA: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
spriteA, spriteA: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
spriteA, spriteA: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
spriteA, spriteA: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
spriteA, spriteA: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
Escape pressed
|
||||
spriteA, spriteA: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=null shiftKey=false keyCode=0]
|
||||
null, spriteA: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=null shiftKey=false keyCode=0]
|
||||
null, null: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object Sprite] shiftKey=false keyCode=0]
|
||||
spriteA, spriteA: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=null shiftKey=false keyCode=0]
|
||||
null, spriteA: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=null shiftKey=false keyCode=0]
|
||||
spriteA, spriteA: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
spriteA, spriteA: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
spriteA, spriteA: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
spriteA, spriteA: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
spriteA, spriteA: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
spriteA, spriteA: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
null, spriteA: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
||||
Escape pressed
|
||||
spriteA, spriteA: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=null shiftKey=false keyCode=0]
|
||||
null, spriteA: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=null shiftKey=false keyCode=0]
|
||||
spriteA, spriteA: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false]
|
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
num_ticks = 1
|
Loading…
Reference in New Issue