我有一个精灵,当它被添加到屏幕上时,我希望它被添加到舞台上的其他所有内容上。
确保添加精灵的最佳方法是在所有内容之上,而不是隐藏在其他精灵之后?
谢谢,
~kcg
答案 0 :(得分:6)
无论何时添加剪辑,默认情况下它都会添加到顶部。
所以可以使用
addChild(Sprite);
或
addChildAt(Sprite,this.numChildren );
但如果你出于任何原因使用flash / flex IDE&试图将剪辑保持在所有内容的顶部始终&在运行中并没有真正产生它们,那么我建议你只需将剪辑添加到最顶层。但是因为你已经将它标记为只有动作脚本,所以这里并不存在图层事物。
您也可以考虑将swapchildren用于已有的剪辑和放大器。在父显示对象中交换深度。
swapChildren(DisplayObject, DisplayObject);
答案 1 :(得分:2)
将它添加到舞台上。
stage.addChild(精灵);
您可能正在将其添加到低于另一个的子精灵中:
Stage
- Child1
*** Adding here ***
- Child2
- Something obscuring your sprite
将其添加到舞台将确保:
Stage
- Child1
- Child2
- Something obscuring your sprite
*** Adding here ***
答案 2 :(得分:0)
如果父级是顶级MovieClip,则应该可以使用
addChildAt( topSprite , this.numChildren );
当然,如果之后添加了其他Sprite,这将不再起作用,您可以创建两个容器,它们将作为Sprite的父层并为此特定Sprite保留顶层
var bottomLayer:Sprite = new Sprite(); var topLayer:Sprite = new Sprite(); addChildAt( bottomLayer , 0 ); addChild( topLayer ); //somewhere else in your code bottomLayer.addChild( anySprite ); topLayer.addChild( topSprite );
答案 3 :(得分:0)
这是一个简单的功能:
private function set onTop (displayer:DisplayObject):void
{
displayer.parent.addEventListener(Event.ADDED, function (event:Event):void
{
if (event.target.parent == event.currentTarget)
DisplayObjectContainer(event.currentTarget).addChild(displayer);
}, false, 0, true);
}
测试样本如下:
package
{
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.GlowFilter;
import flash.text.TextField;
public class Main extends Sprite
{
public function Main ()
{
this.addChild(this.createRandom());
this.addChild(this.createRandom());
this.onTop = this.addChild(this.createTop());
this.addChild(this.createRandom());
this.addChild(this.createRandom());
this.addChild(this.createRandom());
this.addChild(this.createRandom());
}
private function set onTop (displayer:DisplayObject):void
{
displayer.parent.addEventListener(Event.ADDED, function (event:Event):void
{
if (event.target.parent == event.currentTarget)
DisplayObjectContainer(event.currentTarget).addChild(displayer);
}, false, 0, true);
}
private function createTop ():DisplayObject
{
var text:TextField = new TextField();
text.text = "I'm always on top!";
text.filters = [new GlowFilter(0xFFFFFF)];
return text;
}
private var index:int = 0;
private function createRandom ():DisplayObject
{
var sp:Sprite = new Sprite();
sp.x = 10 * this.index;
sp.y = 2 * this.index;
sp.graphics.beginFill([0xFF0000, 0x00FF00, 0x0000FF, 0xFFFFFF][this.index++ % 4], 0.8);
sp.graphics.drawRect(0, 0, 100, 100);
sp.graphics.endFill();
return sp;
}
}
}