代码之家  ›  专栏  ›  技术社区  ›  Mikee

动作脚本movieclip fade

  •  0
  • Mikee  · 技术社区  · 16 年前

    目前我正在努力解决一些相当简单的闪光灯问题。

    想象你有两个movieclips在一起。这两个movieclip都有相同的movieclip。

    如果我淡出顶部movieclip,我希望看不到任何变化,但出于某种原因,我可以看到淡出发生。

    就好像动作脚本正在独立地淡出子动作片。

    有人知道怎么避开这个吗?我不想看到任何褪色。

    编辑:

    人们似乎难以想象我遇到的问题。下面是一个非常简单的代码示例:

    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似乎可以执行此操作,这很好。

    3 回复  |  直到 16 年前
        1
  •  0
  •   Philipp Redeker    16 年前

    问题是movieclip中有两个对象。你必须了解flash如何处理mcs的alpha透明。Y的每个孩子的APlha都是0.5。wich表示通过y的hello,你会看到一点红色,这个红色覆盖了x的hello。

    可以将Y中红色形状的可见性设置为“假”。那你就看不到褪色了。

        2
  •  1
  •   Aesphere    16 年前

    如果您只想让顶部的电影剪辑淡出,而底部movie clip的顶部没有透明层,那么您可以在应用alpha之前将blendMode更改为overlay。

    y.blendMode=blendMode.overlay;
    Yα=0.5;

    没关系,好像你找到它了

        3
  •  0
  •   Piotr    16 年前

    您是创建两个单独的movieclips还是使用相同的引用两次?movieclip只能有一个父级,因此如果您这样做:

    容器.addchild(mc); 容器.addchild(mc);

    只有一个movieclip。这可以解释为什么你看到一个褪色,因为在你正在褪色的movieclip后面没有movieclip。