【发布时间】:2013-08-20 21:37:57
【问题描述】:
我有此代码,用于在玩家完成拖放时在舞台上显示一条消息。我希望在为下一帧单击按钮时删除此精灵。有人可以帮我写代码吗?
stage.addEventListener(Event.ENTER_FRAME, EntFrame);
function EntFrame (e:Event):void
{
if (CntP1+CntP2+CntP3+CntP4+CntP5+CntP6+CntP7+CntP8 == 40)
{
var w:int = 400, h:int = 200;
var win:Sprite = new Sprite();
win.name = "Mywin";
addChild(win);
// draw rounded rect with subtle vertical linear gradient fill and blue stroke
win.graphics.lineStyle(4,0x0077ff);
var mat:Matrix = new Matrix();
mat.createGradientBox(w, h, 90 * (Math.PI / 180));
win.graphics.beginGradientFill(GradientType.LINEAR,[0xffffff,0xeeeeee],[1.00,1.00],[0,255],mat);
win.graphics.drawRoundRect(0,0,w,h,15,15);
// show center "YOU WIN!" text
var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.antiAliasType = AntiAliasType.ADVANCED;
tf.defaultTextFormat = new TextFormat("Arial, Verdana",36,0x454545,true);
tf.text = "Κέρδισες!";
tf.selectable = false;
win.addChild(tf);
tf.x = w/2 - tf.width/2;
tf.y = h/2 - tf.height/2;
// add a drop shadow
var dropShadow:DropShadowFilter = new DropShadowFilter(3,45,0,.35,8,8,1,3);
win.filters = [dropShadow];
// center the graphic
win.x = stage.stageWidth/2 - win.width/2;
win.y = stage.stageHeight/2 - win.height/2;
}
}
【问题讨论】:
-
您可能要删除一大堆它们,因为您要在每一帧上添加一个新的。问题是您没有保留对它们中的任何一个的引用,因此很难抓住它们来调用 removeChild()。老实说,整个函数都需要重写,但您的问题中没有足够的信息来提供建议,以便就重写它以满足总体目标的最佳方式提出建议。
-
我在舞台上有 8 个电影剪辑。播放器单击它们,它们变得不可见,并且在不同位置的 8 个新电影剪辑变得可见。就是这样。当这个过程完成时,我希望文本消息出现,当玩家在不同的帧中移动到下一个游戏时,我希望这条消息消失。我是 Flash 新手,我是自学成才,遇到了很多困难。任何帮助表示赞赏。
标签: actionscript-3