2013-03-06 96 views
1

我一直在使用Swiffy输出.fla文件很容易,但后来我发现,如果在iPad上以横向模式查看,显示器会在项目的一半上“闪烁”白色。非常奇怪的行为,我无法在任何其他设备上复制。拖延CreateJS动画时间轴

因此,我试图使用CreateJS来解决这个问题。我现在只知道有足够的JS通过编辑其他人开发的代码来获得,所以到目前为止我一直效率不高。

我这个地步得到:

/* js 
this.stop(); 
var t=setTimeout(function(){(this.play())}, 1000); 
*/ 

or 

/* js 
this.stop(); 
setTimeout(this.play(), 1000); 
*/ 

我已经无法获得动画介意超时,我已经尝试了许多不同的变体开始尝试做一些魔术发生。它所做的只是立即加载下一帧,根本不会暂停。我在哪里错了?

这里原来的ActionScript:

stop(); 

var shortTimer:Timer=new Timer(1000); 
shortTimer.addEventListener(TimerEvent.TIMER, timerN1); 
shortTimer.start(); 


function timerN1(e:TimerEvent):void{ 
    play(); 
    shortTimer.reset(); 
} 

任何帮助将是非常赞赏,因为我已经得到我自己试图解决这一问题是在我关机时间几个星期没有在那里,和我的客户变得越来越愤怒。更多的设计师,就程序设计而言,他们仍然非常没有受过教育。再一次,即使是一个建议,在这一点上也是非常有用的。似乎无法破解它。

回答

3

这个语法是比较正确的:

 

/* js 
this.stop(); 
var t=setTimeout(function(){(this.play())}, 1000); 
*/ 
 

然而,你可能会发现,“这”窗口,而不是调用它的影片剪辑。您可以通过使用本地参考(在本例中为“_this”)来解决此问题。

 

/* js 
this.stop(); 
var _this = this; 
var t=setTimeout(function(){ 
    console.log(this, _this); 
    _this.play(); 
}, 1000); 
*/ 
 

您可以通过查看您的控制台,并看到有什么区别“this”和“_this”是进行测试。

干杯。

+0

这工作!非常感谢!一个编辑,你在“功能”中省略了“n”。干杯! – Todd 2013-03-07 04:05:48

0

你可能会发布更多你正在使用的代码吗?您是否尝试过使用onAnimationEnd功能:

var _this = this; 

_this.onAnimationEnd = function() { 
    _this.stop(); 
    setTimeout(function(){ 
     _this.play(); 
    }, 1000) 
} 
+0

我无法得到这个工作,可能是因为我没有任何名为“动画”?谢谢您的意见! – Todd 2013-03-07 04:10:20

+0

那么,如果我能看到更多的代码(创建动画的JavaScript),我可能会提供更多帮助。我经常使用CreateJS – eivers88 2013-03-07 04:41:19

+0

这与原来的问题相同,其中函数作用域已被泄漏。 – Lanny 2013-03-07 15:39:45

0

试试这个,让您的范围还活着你setTimeout函数中:

sprite.on('animationend', function(event) { 
    event.target.stop(); 
    setTimeout(animationend.bind(event.target), 1000); 
}); 

function animationend() { 
    this.gotoAndPlay('run'); 
} 

随着使用.bind()你可以传递一个对象作为被调用函数的范围。 More information here