2009-12-07 36 views
0

我想在ActionScript 3(我使用Flex AIR框架)上的圓形形狀做掩碼。它與生態足跡有關,每個圈代表一個地球。 這個生態足跡照片是在一個容器內。問題是,雖然圖片漂浮,但面具似乎是固定的。當我向下滾動容器時,圖片將滾動得很好,但是蒙版不會剪掉圖片的頂部。 我已將此和其他UIMovieClip放入VBox容器中。該VBox容器在另一個VBox容器內。如果我將VBox容器放在後者的底部,那麼面罩將不會與它一起走動,因此圓形不會被遮蓋。面具在AIR與ActionScript 3

mask = new UIMovieClip(); 
mask.graphics.beginFill(0xFFFFFF); 
mask.graphics.drawRect(radius,radius+radius*2*(1-(ecoWeight-Math.floor(ecoWeight))),1000,1000); 
mask.graphics.endFill();  
earth = new UIMovieClip();  
earth.graphics.beginFill(0xFFFFFF); 
earth.graphics.drawCircle(radius,radius,radius); 
earth.mask=mask; 
earth.graphics.endFill(); 

回答

0

面具吸吮,並經常不做他們所期望的。 BlendMode.ALPHA與BlendMode.LAYER一起使用,我已經有了更多的運氣。

+0

也許不是正確的答案,但我用BlendMode.ERASE和BlendMode.LAYER做到了,並且更簡單。 – webdreamer

0

我不知道Flex,我使用Flash CS3,但嘗試添加一個Event Listener來重新定位掩碼。 此外,請確保您按照正確的順序進行操作。應用面具,然後把所有東西放在第二個VBox中。 換句話說,我對Actionscript的(有限的)經驗告訴我,年表很重要。

另外,請確保所有變量的定位正確。在Flash CS3中(同樣,我可能會噴出亂碼),如果您單擊帶有子元素的MovieClip並且沒有爲子元素專門關閉鼠標,則父級將不會註冊該事件。

祝你好運!

1

要麼掩模添加到垂直框容器:

myVBox.addChild(mask); 

或把兩者在掩模和形狀到容器然後將容器:

var bundle:Sprite = new Sprite(); 

mask = new UIMovieClip(); 
... 

earth = new UIMovieClip();  
... 

bundle.addChild(mask); 
bundle.addChild(earth); 

myVBox.addChild(bundle); 

bundle.x = 100; 
bundle.y = 100; 

這解決地球和掩模一起。我對UIMovieClip不熟悉,但可以用我想象的UIMovieClip替換Sprite。這是第一個更好的解決方案,因爲如果你不把它們捆綁在一起,如果你移除了地球,你不太可能記得去掉面具。

希望這會有所幫助。

+0

謝謝!這很有道理。我會嘗試一下:-P – webdreamer