2013-11-23 55 views
0

我正在使用飛鏢動畫包。基本上我想向左滑動一個按鈕飛鏢動畫問題

// Register to handle 'onClick' 
buttonElemet.onClick.listen(onClick); 

void onClick(Event e) {   
    ButtonElement button = // get the button that you want to animate 
    int left = // get the left of the button from style 

    animate(button, properties: {'left':left + 100}, duration: 0); 
} 

這可以按預期的方式手動點擊按鈕。但我需要模擬一系列按鈕點擊(基本上是爲了洗牌拼圖板)。

因此,我調用編程使用點擊事件(S):

for (...) { 
    int numberToSlide = // select a random number to slide 

    ButtonElement button = querySelector('#btn' + numberToSlide.toString()); 
    button.click(); 
} 

當發生這種情況時,在onClick事件「左」的預測不來了。經過相當多的調試後,我懷疑動畫是在一個線程中發生的,當按鈕變爲動畫時,下一個事件進入'onClick'。

對這個問題有什麼想法或想法?謝謝。

注:我有一個類似的代碼,但使用jQuery的動畫。我沒有問題,但jquery動畫。

回答

0

我會創建第二個方法,這和的onClick在模擬方法

void shuffle(int left) { ... } 

呼叫。

一個很好的模式:如果你的代碼需要通過兩個代碼路徑(一些UI,一些不是UI)來運行,請將UI獨立代碼分解出來。

+0

kevmo,這不是關於代碼安排..問題是由於一些運行時間的行爲。基本上我使用button.style.left來檢索左邊的值。但我觀察到這個價值是不一致的。我觀察到的是,動畫仍然在改變這個值,下一次迭代是獲取一個(錯誤的)值。我正在尋找解決方案來解決飛鏢中的這個問題。 – Madhan

+0

Madhan:我猜這不是Dart問題,而是由於動畫CSS屬性報告其值的行爲。 –