当所有mc放在主时间线(舞台)上时,我的代码工作正常但是当我将它们导入一个名为 Container_Mc 的影片剪辑时,代码停止工作。我确定它与目标/深度
有关以下是适用于时间线的代码
stop ();
first = 1;
import mx.transitions.Tween;
import mx.transitions.easing.*;
function dragSetup(clip, targ) {
clip.onPress = function() {
startDrag(this);
};
clip.onRelease = clip.onReleaseOutside=function () {
stopDrag();
if (eval(this._droptarget) == targ) {
var tx:Tween=new Tween(this,'_x',Elastic.easeOut,this._x,this.myFinalX,1,true);
var ty:Tween=new Tween(this,'_y',Elastic.easeOut,this._y,this.myFinalY,1,true);
targ.gotoAndStop(2);
} else {
var tx:Tween=new Tween(this,'_x',Elastic.easeOut,this._x,this.myHomeX,1,true);
var ty:Tween=new Tween(this,'_y',Elastic.easeOut,this._y,this.myHomeY,1,true);
targ.gotoAndStop(2);
}
};
//the variables below will store the clips starting position
clip.myHomeX = clip._x;
clip.myHomeY = clip._y;
//the variables below will store the clips end position
clip.myFinalX = targ._x;
clip.myFinalY = targ._y;
}
dragSetup(drag1,target1)
dragSetup(drag2,target2)
dragSetup(drag3,target3)
btn.onRelease = function() {
if ((_root.drag1._droptarget == "/target1") && (_root.drag2._droptarget == "/target2") && (_root.drag3._droptarget == "/target3")) {
if (first == 1) {
first = 0;
result +=
}
comment = "Great! correct answer";
_root.attachMovie("glamour", "glamour2", 202);
_root.glamour2._x = 226;
_root.glamour2._y = 153;
} else {
comment = "try again!!";
first = 0;
}
}
我很确定问题出在 BTN FUNCTION 中的 IF STATMENT ,因为上面的其余代码在 Container_Mc 它只是if语句的其他“再试一次”答案刚刚返回,即使目标是正确的?
任何想法?
答案 0 :(得分:0)
在您的按钮处理程序中,您有几个对_root
的引用。这可能是问题的原因,因为我想drag1,drag2等都在你的容器内。此函数中的代码在按钮范围内执行,因此如果按钮与投放影片剪辑位于同一时间轴上,则可以安全地将所有_root
替换为_parent
。
更好的方法是将按钮处理程序的范围更改为容器的范围,这意味着您既不需要root也不需要父级。这是使用委托:
完成的btn.onRelease = Delegate.create(this,buttonHandler);
function buttonHandler() {
if ((eval(drag1._droptarget) == target1) && (eval(drag2._droptarget) == target2) && (eval(drag3._droptarget) == target3)) {
// only if all three dragable objects are dropped to their respective targets sentence returns true
if (first == 1) { first = 0; result += }
comment = "Great! correct answer";
attachMovie("glamour", "glamour2", 202);
glamour2._x = 226;
glamour2._y = 153;
} else {
comment = "try again!!";
first = 0;
}
请务必导入脚本顶部的Delegate类,以使其正常工作:
import mx.utils.Delegate;
第二种方法更好,因为您不必担心不同的范围,也类似于AS3中使用的方法。