Actionscript 3 AS3可以工作,但我得到一个ReferenceError:Error#1069属性startDrag未找到
我试着做一个简单的项目,当你点击一个按钮时,一个可拖动的MovieClip被添加到stag中,当你点击它将MovieClip释放到你点击的X/Y位置时,你可以拾取MovieClip并将其拖动到一个箱子(MovieClip)中,在那里它会自我毁灭。代码工作得很好,我可以用按钮制作多个Movieclips,当我把它们拖进垃圾箱时,它们都被销毁了,但是我不喜欢有“错误代码”Actionscript 3 AS3可以工作,但我得到一个ReferenceError:Error#1069属性startDrag未找到,actionscript-3,flash,draggable,referenceerror,Actionscript 3,Flash,Draggable,Referenceerror,我试着做一个简单的项目,当你点击一个按钮时,一个可拖动的MovieClip被添加到stag中,当你点击它将MovieClip释放到你点击的X/Y位置时,你可以拾取MovieClip并将其拖动到一个箱子(MovieClip)中,在那里它会自我毁灭。代码工作得很好,我可以用按钮制作多个Movieclips,当我把它们拖进垃圾箱时,它们都被销毁了,但是我不喜欢有“错误代码” 一些指针: import flash.events.MouseEvent; var rubbish:my_mc = new m
一些指针:
import flash.events.MouseEvent;
var rubbish:my_mc = new my_mc();
var dragging:my_mc;
btntest.addEventListener(MouseEvent.CLICK, makeRubbish);
function makeRubbish (event:MouseEvent):void {
addChild(rubbish);
rubbish.x = mouseX - 10;
rubbish.y = mouseY - 10;
rubbish.width = 50;
rubbish.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
rubbish.buttonMode = true;
}
function stopDragging (event:MouseEvent):void {
this.stage.removeEventListener(MouseEvent.MOUSE_UP, stopDragging);
if(dragging !== null){
dragging.stopDrag();
if (event.currentTarget.hitTestObject(bin)){
removeChild(dragging);
}
dragging = null;
}
}
function startDragging (event:MouseEvent):void {
dragging = event.currentTarget as my_mc;
dragging.startDrag();
this.stage.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
}
事件的
属性并不总是看起来的那样。它实际上是指事件冒泡过程中的当前阶段。尝试使用target
属性currentTarget
- 我还建议将
方法绑定到stage,因为有时候当您单击时,鼠标不会在拖动上方停止拖动
- 我会使用
事件,而不是鼠标向上
来实现标准的拖动行为单击
- 拖动时,保留对拖动的全局引用,以便在正确的对象上调用
方法stopDrag
import flash.events.MouseEvent;
var rubbish:my_mc = new my_mc();
var dragging:my_mc;
btntest.addEventListener(MouseEvent.CLICK, makeRubbish);
function makeRubbish (event:MouseEvent):void {
addChild(rubbish);
rubbish.x = mouseX - 10;
rubbish.y = mouseY - 10;
rubbish.width = 50;
rubbish.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
rubbish.buttonMode = true;
}
function stopDragging (event:MouseEvent):void {
this.stage.removeEventListener(MouseEvent.MOUSE_UP, stopDragging);
if(dragging !== null){
dragging.stopDrag();
if (event.currentTarget.hitTestObject(bin)){
removeChild(dragging);
}
dragging = null;
}
}
function startDragging (event:MouseEvent):void {
dragging = event.currentTarget as my_mc;
dragging.startDrag();
this.stage.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
}
嗯,我仍然得到了错误,但现在当我拖动时整个阶段都在移动,它不喜欢放弃rubbishline 41 error 1118将静态类型的值隐式强制为可能不相关的类型_mc@ChelsieRaeMcNulty现在试试。请注意,更改为my_mc的拖动=event.currentTarget代码>不再有错误但是垃圾被删除后,你拖拽并释放在舞台上的任何地方,它不必像它应该的那样击中垃圾箱?如果我将dragging=event.currentTarget更改为我的_mc,它看起来工作得很完美,没有错误;到event.taget