【发布时间】:2011-03-31 19:58:41
【问题描述】:
我刚开始学习 Flash。无论如何,当我从菜单中退出游戏时,我有一个影片剪辑被删除,例如removeChild(character)。当我按菜单上的“开始”时,我希望角色重新出现。仅当他已被删除时,我如何才能再次添加他?
【问题讨论】:
标签: flash actionscript-3 flash-cs5
我刚开始学习 Flash。无论如何,当我从菜单中退出游戏时,我有一个影片剪辑被删除,例如removeChild(character)。当我按菜单上的“开始”时,我希望角色重新出现。仅当他已被删除时,我如何才能再次添加他?
【问题讨论】:
标签: flash actionscript-3 flash-cs5
您可以再次使用 addChild 来添加他。要测试他是否被添加/删除,你可以测试他的舞台属性是否为真。
if (!character.stage)
{
addChild(character);
}
【讨论】:
也许您只是想更改孩子的可见性或暂时将其从布局中排除?
【讨论】:
检查角色的父属性,看看它是否附加到任何东西上。但请注意,在已添加的显示对象上使用 addChild 是完全可以的。
【讨论】:
删除时将其保存在 var
var mySavedCharacter:MovieClip = characater
removeChild(character)
添加回来时只需添加保存的变量
addChild(mySavedCharacter)
还要记住对象是通过引用传递的,所以对字符的更改也会更改 mySavedCharacter。
【讨论】:
您首先需要确保您具有对要重新添加到舞台的 MovieClip 的引用。如果您在函数中创建此 MovieClip 而没有保存参考,则必须进行“脏”查找以获取参考。以下是如何创建参考以供以后使用的示例:
var myMovieClip : MovieClip; // make sure you have this outside of a function
function createMyMovieClip() : void
{
myMovieClip = new MovieClip();
addMyMovieClip();
}
现在您有了对 MovieClip 的引用,您可以执行以下操作:
function addMyMovieClip() : void
{
stage.addChild( myMovieClip );
}
function removeMyMovieClip : void
{
stage.removeChild( myMovieClip );
}
【讨论】:
if (!yourContainer.contains(character)) yourContainer.addChild(character);
此代码假定“yourContainer”是有效的 DisplayObjectContainer 引用,而“character”是对 DisplayObject 的非空引用。
此外,请确保保存对角色 MovieClip/Sprite 的引用,而不仅仅是添加到显示列表中,以免被 GC。
【讨论】: