2013-03-06 46 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