2010-11-11 102 views
0

我的東西在閃光,而簡單的時刻掙扎。的ActionScript影片剪輯褪色

想象一下,你有兩個movieclips ontop的海誓山盟。這兩個影片剪輯都有相同的影片剪輯。

如果我淡出頂級的動畫片段,我希望看不到任何變化,但由於某種原因,我可以看到淡入淡出發生。

這就像動作是獨立地淡出子電影剪輯。

任何人都知道如何解決這個問題?我不想看到任何淡入淡出。

編輯:

人們似乎有麻煩形象化我遇到什麼麻煩。這裏有一個非常簡單的代碼示例:

var format:TextFormat = new TextFormat(); 
format.size = 100; 
format.color = 0xFFFFFF; 

// create a red square with text inside 
var x:MovieClip = new MovieClip(); 
x.graphics.beginFill(0xCC0000); 
x.graphics.drawRect(0, 0, 400, 400); 
x.graphics.endFill(); 
var x_txt:TextField = new TextField(); 
x_txt.text = "hello"; 
x_txt.width = 500; 
x_txt.setTextFormat(format); 
x.addChild(x_txt); 
addChild(x); 


// create a red square with text inside 
var y:MovieClip = new MovieClip(); 
y.graphics.beginFill(0xCC0000); 
y.graphics.drawRect(0, 0, 400, 400); 
y.graphics.endFill(); 
var y_txt:TextField = new TextField(); 
y_txt.text = "hello"; 
y_txt.width = 500; 
y_txt.setTextFormat(format); 
y.addChild(y_txt); 
addChild(y); 

y.alpha = 0.5; 

據我所知,顯示的文本不應該是純白色的。

相反,它表現爲褪色的白色。 http://www.mikeefranklin.co.uk/Test2.swf

編輯2:

I've decided to grab the bitmap data and add that instead. it's not ideal, but does what I was looking for. 

var format:TextFormat = new TextFormat(); 
format.size = 100; 
format.color = 0xFFFFFF; 


// create a red square with text inside 
var x:MovieClip = new MovieClip(); 
x.graphics.beginFill(0xCC0000); 
x.graphics.drawRect(0, 0, 400, 400); 
x.graphics.endFill(); 
var x_txt:TextField = new TextField(); 
x_txt.text = "hello"; 
x_txt.width = 500; 
x_txt.setTextFormat(format); 
x.addChild(x_txt); 


var xbmpd:BitmapData = new BitmapData(x.width, x.height); 
xbmpd.draw(x); 
addChild(new Bitmap(xbmpd)); 


// create a red square with text inside 
var y:MovieClip = new MovieClip(); 
y.graphics.beginFill(0xCC0000); 
y.graphics.drawRect(0, 0, 400, 400); 
y.graphics.endFill(); 
var y_txt:TextField = new TextField(); 
y_txt.text = "hello"; 
y_txt.width = 500; 
y_txt.setTextFormat(format); 

y.addChild(y_txt); 

var ybmpd:BitmapData = new BitmapData(y.width, y.height); 
ybmpd.draw(y); 
addChild(new Bitmap(ybmpd)); 


y.alpha = 0.5; 

編輯3:

設置的BlendMode爲BlendMode.LAYER似乎做的工作,而不是,這是很好的。

+0

當然是的話,請記住,你的第二個影片剪輯y的紅色背景也和紅色背景是在0.5α,使其重疊到中第一個動畫片段。 – Aesphere 2010-11-11 16:43:35

+0

所以如果你在影片剪輯上設置了alpha,它會將所有單獨的影片剪輯變成alpha?不只是整個事情? – Mikee 2010-11-11 16:45:26

+0

你設置alpha的動畫片段就是容器,所以如果你將該alpha設置爲0.5,那麼它會以0.5顯示任何內容。相對於該父級動畫片段容器,內部alpha仍然是1。希望這是有道理的... – Aesphere 2010-11-11 16:48:41

回答

0

問題是MovieClip中有兩個對象。你必須瞭解Flash如何處理MC的alpha透明。 y的每個孩子都有0.5的aplha。這意味着你會在y的問候中看到一點點紅色。紅色覆蓋x的問候。

您可以將y中紅色形狀的可見性設置爲false。那麼你不會看到淡入淡出。

0

您是創建兩個獨立的影片剪輯還是使用相同的引用兩次?動畫片段只能有一個父級,所以如果你這樣做:

container.addChild(mc); container.addChild(mc);

只有一個動畫片段存在。這可以解釋爲什麼你會看到一個褪色,因爲你正在消失的影片剪輯背後沒有動畫片段。

+0

不,它們是動畫片段的單獨實例。 – Mikee 2010-11-11 16:05:27

+0

......我想。他們是來自SWC的資產。我每次都在說新的MyAsset().. – Mikee 2010-11-11 16:07:25

+0

也許你是在淡化父級動畫片段嗎?你有沒有嘗試把影片剪輯放在海誓山盟旁邊,以確保兩者都可以立即看到? – 2010-11-11 16:08:09

1

如果您只是希望將頂部影片剪輯淡入淡出而不在底部影片剪輯頂部進行透明度分層,則可以在應用Alpha之前將blendMode更改爲覆蓋。

y.blendMode = BlendMode.OVERLAY;
y.alpha = 0。5;

沒關係,好​​像你發現了吧XD