如何删除创建的 children,并重新启动动画
how delete created children, and restart animation
我做了下面的代码来创建和拖动字母,如果很脏请见谅,但我刚学AS3,我需要你帮我完成删除创建的字母并重新启动动画的代码,有一个按钮。
LetraA.addEventListener(MouseEvent.MOUSE_DOWN, arrastrarA);
function arrastrarA(event: MouseEvent): void {
var LetraA_1 = new letraA;
addChild(LetraA_1);
LetraA_1.x = 72.15;
LetraA_1.y = 316.45;
LetraA_1.startDrag();
}
LetraB.addEventListener(MouseEvent.MOUSE_DOWN, arrastrarB);
function arrastrarB(event: MouseEvent): void {
var LetraB_1 = new letraB;
addChild(LetraB_1);
LetraB_1.x = 170.35;
LetraB_1.y = 316.45;
LetraB_1.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP, soltarletras);
function soltarletras(event: MouseEvent): void {
LetraA.stopDrag();
}
Resetear.addEventListener(MouseEvent.CLICK, eliminarhijos);
function eliminarhijos(event:MouseEvent):void
{
"I need help here please"
}
有几种方法。这取决于你有什么,能做什么,不能做什么,使用哪一个。
方式№1。您可以为所有字母准备一个单独的容器,然后完全清理该容器。
// Before your code.
var TheABC:Sprite = new Sprite;
addChild(TheABC);
// Inside the letter creation methods.
// I do hope you do not have 26 separate functions for that.
// ...
TheABC.addChild(LetraA_1);
// ...
// ...
TheABC.addChild(LetraB_1);
// ...
// So, the finale is very simple.
function eliminarhijos(e:MouseEvent):void
{
// Remove all the children at once.
TheABC.removeChildren();
// If, by any chance, you have a VERY old Flash
// below Player 11, the one above won't work so
// you would have to resolve to the one below.
// Proceed while there are children at all.
// while (ThABC.numChildren)
// {
// // Remove the firstmost child.
// TheABC.removeChildAt(0);
// }
}
方式№2。录取名单。你保留了一份需要删除的东西的清单。
// Before your code.
var ABClist:Array = new Array;
// Inside the letter creation methods.
// ...
addChild(LetraA_1);
ABClist.push(LetraA_1);
// ...
// ...
addChild(LetraB_1);
ABClist.push(LetraB_1);
// ...
// Finally.
function eliminarhijos(e:MouseEvent):void
{
// Iterate over the listed letters.
for each (var aLetter:DisplayObject in ABClist)
{
// Removes each of the listed letters, one by one.
removeChild(aLetter);
}
// Clear the list.
ABClist.length = 0;
}
方式№3。标记。如果出于任何不可能的原因,上述任何一个都不适合您,您可以以特定方式命名这些字母,以便从其他对象中过滤它们。
// Inside the letter creation methods.
// ...
addChild(LetraA_1);
LetraA_1.name = "LETTER";
// ...
// ...
addChild(LetraB_1);
LetraB_1.name = "LETTER";
// ...
// Finally.
function eliminarhijos(e:MouseEvent):void
{
// Iterate over all children. Backward loop, because if you
// remove something, the whole body of children shifts down.
for (var i:int = numChildren - 1; i >= 0; i--)
{
var aChild:DisplayObject = getChildAt(i);
// So you have a criteria to figure out if it is a letter or not.
if (aChild.name == "LETTER")
{
removeChild(aChild);
}
}
}
方式№4。入怪。如果上面的 none 适合您,那么仍然有一种方法可以将字母与那里的其他对象分开。
// You need to list all the classes of your letters here.
var LetterBox:Array = [letraA, letraB];
// The clean up.
function eliminarhijos(e:MouseEvent):void
{
// Iterate over all children. Backward loop, because if you
// remove something, the whole body of children shifts down.
for (var i:int = numChildren - 1; i >= 0; i--)
{
var aChild:DisplayObject = getChildAt(i);
// Now iterate over all possible letter classes
// to figure out if the given child belongs to any of them.
for each (var aClass:Class in LetterBox)
{
// Match criteria.
if (aChild is aClass)
{
removeChild(aChild);
break;
}
}
}
}
我做了下面的代码来创建和拖动字母,如果很脏请见谅,但我刚学AS3,我需要你帮我完成删除创建的字母并重新启动动画的代码,有一个按钮。
LetraA.addEventListener(MouseEvent.MOUSE_DOWN, arrastrarA);
function arrastrarA(event: MouseEvent): void {
var LetraA_1 = new letraA;
addChild(LetraA_1);
LetraA_1.x = 72.15;
LetraA_1.y = 316.45;
LetraA_1.startDrag();
}
LetraB.addEventListener(MouseEvent.MOUSE_DOWN, arrastrarB);
function arrastrarB(event: MouseEvent): void {
var LetraB_1 = new letraB;
addChild(LetraB_1);
LetraB_1.x = 170.35;
LetraB_1.y = 316.45;
LetraB_1.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP, soltarletras);
function soltarletras(event: MouseEvent): void {
LetraA.stopDrag();
}
Resetear.addEventListener(MouseEvent.CLICK, eliminarhijos);
function eliminarhijos(event:MouseEvent):void
{
"I need help here please"
}
有几种方法。这取决于你有什么,能做什么,不能做什么,使用哪一个。
方式№1。您可以为所有字母准备一个单独的容器,然后完全清理该容器。
// Before your code.
var TheABC:Sprite = new Sprite;
addChild(TheABC);
// Inside the letter creation methods.
// I do hope you do not have 26 separate functions for that.
// ...
TheABC.addChild(LetraA_1);
// ...
// ...
TheABC.addChild(LetraB_1);
// ...
// So, the finale is very simple.
function eliminarhijos(e:MouseEvent):void
{
// Remove all the children at once.
TheABC.removeChildren();
// If, by any chance, you have a VERY old Flash
// below Player 11, the one above won't work so
// you would have to resolve to the one below.
// Proceed while there are children at all.
// while (ThABC.numChildren)
// {
// // Remove the firstmost child.
// TheABC.removeChildAt(0);
// }
}
方式№2。录取名单。你保留了一份需要删除的东西的清单。
// Before your code.
var ABClist:Array = new Array;
// Inside the letter creation methods.
// ...
addChild(LetraA_1);
ABClist.push(LetraA_1);
// ...
// ...
addChild(LetraB_1);
ABClist.push(LetraB_1);
// ...
// Finally.
function eliminarhijos(e:MouseEvent):void
{
// Iterate over the listed letters.
for each (var aLetter:DisplayObject in ABClist)
{
// Removes each of the listed letters, one by one.
removeChild(aLetter);
}
// Clear the list.
ABClist.length = 0;
}
方式№3。标记。如果出于任何不可能的原因,上述任何一个都不适合您,您可以以特定方式命名这些字母,以便从其他对象中过滤它们。
// Inside the letter creation methods.
// ...
addChild(LetraA_1);
LetraA_1.name = "LETTER";
// ...
// ...
addChild(LetraB_1);
LetraB_1.name = "LETTER";
// ...
// Finally.
function eliminarhijos(e:MouseEvent):void
{
// Iterate over all children. Backward loop, because if you
// remove something, the whole body of children shifts down.
for (var i:int = numChildren - 1; i >= 0; i--)
{
var aChild:DisplayObject = getChildAt(i);
// So you have a criteria to figure out if it is a letter or not.
if (aChild.name == "LETTER")
{
removeChild(aChild);
}
}
}
方式№4。入怪。如果上面的 none 适合您,那么仍然有一种方法可以将字母与那里的其他对象分开。
// You need to list all the classes of your letters here.
var LetterBox:Array = [letraA, letraB];
// The clean up.
function eliminarhijos(e:MouseEvent):void
{
// Iterate over all children. Backward loop, because if you
// remove something, the whole body of children shifts down.
for (var i:int = numChildren - 1; i >= 0; i--)
{
var aChild:DisplayObject = getChildAt(i);
// Now iterate over all possible letter classes
// to figure out if the given child belongs to any of them.
for each (var aClass:Class in LetterBox)
{
// Match criteria.
if (aChild is aClass)
{
removeChild(aChild);
break;
}
}
}
}