2010-11-11 58 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