2010-04-29 66 views
2

我有下面的代碼,它基本上是跨屏幕動畫對象,當發生翻轉時它暫停動畫,並顯示一些信息。一切工作正常,但當它暫停時,我會像當前對象一樣'頂部',所以其他項目落後。將對象帶到前面,在Flash AS3

我看了一下setChildIndex,但沒有多少運氣。

package { 

import flash.display.MovieClip; 
import flash.display.Sprite; 
import flash.events.MouseEvent; 
import flash.geom.Point; 
import flash.events.KeyboardEvent; 
import flash.events.*; 
import caurina.transitions.Tweener; 
import fl.motion.Color; 

public class carpurchase extends Sprite { 

    public function carpurchase() { 

     var carX = 570; 


     //Set cars 
     var car1:fullCar = new fullCar(); 
     car1.info.alpha = 0; 
     //var c:Color = new Color(); 
     //c.setTint(0xff0000, 0.8); 
     //car2.car.transform.colorTransform=c; 
     car1.x = carX; 
     car1.y = 280; 
     car1.info.title.text = "test"; 
     car1.info.desc.text = "test"; 
     addChild(car1); 
     car1.addEventListener(MouseEvent.ROLL_OVER, carPause); 
     car1.addEventListener(MouseEvent.ROLL_OUT, carContinue); 
     function car1Reset():void { 
      Tweener.addTween(car1, {x:carX, time:0, onComplete:car1Tween}); 
     } 
     function car1Tween():void { 
      Tweener.addTween(car1, {x:-120, time:2, delay:3, transition:"linear", onComplete:car1Reset}); 
     } 
     car1Tween(); 


     var car2:fullCar = new fullCar(); 
     car2.info.alpha = 0; 
     var c:Color = new Color(); 
     c.setTint(0xff0000, 0.8); 
     car2.car.transform.colorTransform=c; 
     car1.x = carX; 
     car2.y = 175; 
     car2.info.title.text = "test"; 
     car2.info.desc.text = "test"; 
     addChild(car2); 
     car2.addEventListener(MouseEvent.ROLL_OVER, carPause); 
     car2.addEventListener(MouseEvent.ROLL_OUT, carContinue); 
     function car2Reset():void { 
      Tweener.addTween(car2, {x:carX, time:0, onComplete:car2Tween}); 
     } 
     function car2Tween():void { 
      Tweener.addTween(car2, {x:-120, time:3, delay:0, transition:"linear", onComplete:car2Reset}); 
     } 
     car2Tween(); 



     function carPause(e:MouseEvent):void { 
      Tweener.pauseTweens(e.target); 
      Tweener.addTween(e.target.info, {y:-150, alpha:1, time:.5, transition:"easeout"}); 
     } 
     function carContinue(e:MouseEvent):void { 
      Tweener.addTween(e.target.info, {y:10, alpha:0, time:.5, transition:"easeout"}); 
      Tweener.resumeTweens(e.target); 
     } 
    } 
} 

任何幫助,歡迎

+0

我也有同樣問題的任何幫助將非常apreciated! setChildIndex(evento.target,numChildren - 1);這不工作,它標誌着這個錯誤:場景1,圖層'行動',第1幀,第6行\t 1084:語法錯誤:期待rightparen之前1. – 2011-12-31 00:56:10

回答

1

你試過addChildAt

Adobe Live Docs - addChildAt()

+0

只有當這個對象添加到舞臺上時,這隻會工作嗎?我會需要他們改變時暫停,即。當發生翻轉時,當前對象必須處於頂層 – jimbo 2010-04-29 11:26:46

+0

不適用,它在用於已經是孩子的東西時也可以使用。通常情況下,如果你做了parent.addChildAt(child,n),你可以將孩子添加到位置n,並將所有其他孩子的位置增加到n或更高。實際上,你將孩子像卡片一樣插入甲板。如果你在孩子已經是父母的孩子的時候這樣做,它的工作方式完全相同,除非它不添加部分,它只是將其移動到位置n。 – 2010-04-29 14:17:25

+0

我曾嘗試添加: 功能carPause(E:MouseEvent)方法:無效{ \t \t \t \t addChildAt(e.target,6) \t \t Tweener.pauseTweens(例如目標); Tweener.addTween(e.target.info,{y:-10,alpha:1,time:1,transition:「easeout」});}}; \t \t \t} 但給出錯誤,有什麼想法? – jimbo 2010-04-29 14:52:14

3
function carPause(e:MouseEvent):void { 
    setChildIndex(e.target, numChildren-1); 
    Tweener.pauseTweens(e.target); 
    Tweener.addTween(e.target.info, {y:-150, alpha:1, time:.5, transition:"easeout"}); 
} 
+0

感謝您的回覆,抱歉讓我花了這麼長時間回到你身邊,一直在做另一份工作。我嘗試添加行,但得到一個錯誤: 1118:隱式強制將靜態類型爲Object的值強制爲可能不相關的類型flash.display:DisplayObject。 setChildIndex(e.target,this.numChildren-1); 任何幫助再次歡迎 – jimbo 2010-06-03 08:30:27

8

只需在該特定實例上使用addChild()即可。它將被放置到「頂」

從幫助文件:

Adds a child DisplayObject instance to this DisplayObjectContainer instance. The child is added to the front (top) of all other children in this DisplayObjectContainer instance.

是的,即使對象已經是DisplayList中工作。

+0

最簡單的解決方案往往是最好的 – divillysausages 2011-12-31 17:04:25

2

我搜索了同樣的問題,發現這個舊帖子。 我很好的解決了這個問題,只是想分享給大家,以便將來找到這篇文章。

問題是,您嘗試從加載器對象本身設置childindex,但這是設置它的蠕動位置。在這種情況下,您需要父路徑才能訪問您的所有車輛。

好,長話短說:由名稱查找 在屬性通道創建一個新的Sprite(類名之後)

// [...] 
public class carpurchase extends Sprite { 
    private var _sprite:Sprite = new Sprite(); 
} 
// [...] 
// Add the cars to the sprite 
    _sprite.addChild(car1); // replace this lines 
//[...] 
    _sprite.addChild(car2); // replace this lines 
// Of course adding the sprite to your stage 
    addChild(_sprite); 

它之後,訪問您當前的目標,並將其設置: 嘗試這些變化在上面

_mc.setChildIndex(_mc.getChildByName(e.target.name), _mc.numChildren-1); // Set on top 

可以將它,它有一天可以幫助別人

+0

「可能吧,它有助於某個人」 - 它只是!謝謝 ! :) – 2015-03-11 10:03:59