1

我一直在使用 Swiffy 很容易地输出 .fla 文件,但后来有人告诉我,如果在 iPad 上以横向模式查看,显示器会在项目的一半上交替“闪烁”白色。非常奇怪的行为,我无法在任何其他设备上复制。

所以,我开始尝试使用 CreateJS 来解决这个问题。我这个时候的JS只知道编辑别人开发的代码就够了,所以到现在为止我的效率很低。

我已经做到了这一点:

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

or

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

我无法让动画记住超时,我尝试了许多不同的变体来尝试让一些魔法发生。它所做的只是立即加载下一帧,它根本不会暂停。我在哪里错了?

这是原始的动作脚本:

stop();

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


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

任何帮助都将不胜感激,因为我自己在几周的休息时间都无法解决这个问题,而且我的客户变得越来越生气。更像是一个设计师,就编程而言仍然非常未受过教育。同样,在这一点上,即使是建议也会非常有帮助。好像破解不了

4

3 回答 3

3

这种语法更正确:


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

但是,您可能会发现“this”是 Window,而不是调用它的 MovieClip。您可以通过使用本地引用(在本例中为“_this”)来解决此问题。


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

您可以通过查看控制台来测试它,并查看“this”和“_this”之间的区别。

干杯。

于 2013-03-07T00:39:30.107 回答
0

您能否发布更多您正在使用的代码?您是否尝试过使用 onAnimationEnd 函数:

var _this = this;

_this.onAnimationEnd = function() {
    _this.stop();
    setTimeout(function(){
       _this.play();
    }, 1000)
}
于 2013-03-07T00:11:04.310 回答
0

试试这个让你的作用域在你的setTimeout函数中保持活力:

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

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

通过使用,.bind()您可以将对象作为被调用函数的范围传递。更多信息在这里

于 2016-10-03T16:09:38.370 回答