Arrays AS3 Flash-如何从不同功能中删除动态创建的MovieClip?
使用数组,我创建了一个由瓷砖组成的MovieClip。我需要动态创建网格,因为有多个大小选项。如果用户选择不同的网格大小,我需要在添加新网格之前删除当前的网格-这就是我遇到的问题。以下是创建网格的代码:Arrays AS3 Flash-如何从不同功能中删除动态创建的MovieClip?,arrays,actionscript-3,flash,Arrays,Actionscript 3,Flash,使用数组,我创建了一个由瓷砖组成的MovieClip。我需要动态创建网格,因为有多个大小选项。如果用户选择不同的网格大小,我需要在添加新网格之前删除当前的网格-这就是我遇到的问题。以下是创建网格的代码: public function createGrid() { var gridItems = new Array(); var grid:MovieClip = new MovieClip(); addChildAt(grid, 0); for (va
public function createGrid() {
var gridItems = new Array();
var grid:MovieClip = new MovieClip();
addChildAt(grid, 0);
for (var i:int = 0; i < gridSize; i++) {
gridItems[i] = new tile();
gridItems[i].x = (i % gridBreak) * (gridItems[i].width );
gridItems[i].y = int(i / gridBreak) * (gridItems[i].height);
grid.addChild(gridItems[i]);
}
grid.x = stage.stageWidth/ 2 - grid.width/2;
grid.y = (stage.stageHeight - 100) / 2 - grid.height/2;
}
公共函数createGrid(){
var gridItems=新数组();
var grid:MovieClip=新的MovieClip();
addChildAt(网格,0);
对于(变量i:int=0;i
如何从不同的函数中删除网格?似乎每当我离开createGrid()函数时,对grid的引用就会丢失
谢谢你的建议
完整代码如下。下拉菜单是从-我知道代码是混乱的…这是一个正在进行的工作
package {
import flash.display.MovieClip;
import flash.events.*;
import flash.geom.*;
import flash.display.*;
import flash.ui.*;
import flash.text.*;
import com.dropdown.DropDown;
import fl.controls.*;
public class sp2h extends MovieClip {
public var gridSize:Number = 225;
public var gridBreak:Number = 15;
private var gridItems = new Array();
private var grid:MovieClip = new MovieClip();
public var rotate:Number = 1;
public var gridStatus:Number = 0;
public var dropDwn:MovieClip;
public var t:TextField;
public var dropDArray:Array = new Array({label:"Size 0 - 15x15", data:225},{label:"Size 1 - 18x15", data:270},{label:"Size 2 - 18x18", data:324},
{label:"Size 3 - 21x18", data:378},{label:"Size 4 - 21x21", data:441},{label:"Size 5 - 24x21", data:504},
{label:"Size 6 - 24x24", data:576},{label:"Size 7 - 27x24", data:648},{label:"Size 8 - 27x27", data:729},
{label:"Size 9 - 30x27", data:810},{label:"Size 10 - 30x30", data:900},{label:"Size 11 - 33x30", data:990},
{label:"Size 12 - 33x33", data:1089},{label:"Size 13 - 36x33", data:1188},{label:"Size 14 - 36x36", data:1296},
{label:"Size 15 - 39x36", data:1404},{label:"Size 16 - 39x39", data:1521},{label:"Size 17 - 42x39", data:1638},
{label:"Size 18 - 42x42", data:1764});
public var dropDArray2:Array = new Array({label:"Hip & Stylish", data:0},{label:"Christmas", data:1},{label:"Easter", data:2},{label:"Slick", data:3});
public function sp2h() {
createGrid();
dropDwn = new DropDown();
dropDwn.x = 50;
dropDwn.y = 820;
dropDwn.init(dropDArray,150, 25,"up");
addChild(dropDwn);
dropDwn.addEventListener(Event.CHANGE,onDropDown);
createStatusField();
function createStatusField():void
{
t = new TextField();
t.name = "tField";
t.x = 350;
t.y = 100;
t.selectable = false;
t.autoSize = TextFieldAutoSize.CENTER;
addChild(t);
}
function onDropDown(event:Event)
{
t.text = event.target.selectedObject.label;
gridSize = event.target.selectedObject.data;
switch (gridSize){
case 225:
gridBreak = 15;
break;
case 270:
gridBreak = 18;
break;
case 324:
gridBreak = 18;
break;
case 378:
gridBreak = 21;
break;
case 441:
gridBreak = 21;
break;
case 504:
gridBreak = 24;
break;
case 576:
gridBreak = 24;
break;
case 648:
gridBreak = 27;
break;
case 729:
gridBreak = 27;
break;
case 810:
gridBreak = 30;
break;
case 900:
gridBreak = 30;
break;
case 990:
gridBreak = 33;
break;
case 1089:
gridBreak = 33;
break;
case 1188:
gridBreak = 36;
break;
case 1296:
gridBreak = 36;
break;
case 1404:
gridBreak = 39;
break;
case 1521:
gridBreak = 39;
break;
case 1638:
gridBreak = 42;
break;
case 1764:
gridBreak = 42;
break;
}
createGrid();
}
wtt1.addEventListener(MouseEvent.MOUSE_DOWN, wtt1_ClickToDrag);
function wtt1_ClickToDrag(event:MouseEvent):void
{
wtt1.startDrag();
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
function myKeyDown(e:KeyboardEvent):void{
if (e.keyCode == Keyboard.SPACE){
rotate = rotate + 1;
if (rotate == 5){
rotate = 1;
}
trace(rotate);
wtt1.gotoAndStop(rotate);
}
}
stage.addEventListener(MouseEvent.MOUSE_UP, wtt1_ReleaseToDrop);
function wtt1_ReleaseToDrop(event:MouseEvent):void
{
wtt1.stopDrag();
stage.removeEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
}}}
public function createGrid() {
removeGrid(); //a separate function that removes your grid
addChildAt(grid, 0);
gridStatus = 1;
for (var i:int = 0; i < gridSize; i++) {
gridItems[i] = new tile();
gridItems[i].x = (i % gridBreak) * (gridItems[i].width );
gridItems[i].y = int(i / gridBreak) * (gridItems[i].height);
grid.addChild(gridItems[i]);
}
//align to center
grid.x = stage.stageWidth/ 2 - grid.width/2;
grid.y = (stage.stageHeight - 100) / 2 - grid.height/2;
//send to back
addChildAt(bggrid,0);
}
public function removeGrid():void {
if(grid && grid.parent) removeChild(grid);
if (contains(grid)) {
trace("grid is on still on stage")
}
trace(grid.parent)
}}}
包{
导入flash.display.MovieClip;
导入flash.events.*;
导入flash.geom.*;
导入flash.display.*;
导入flash.ui.*;
导入flash.text.*;
导入com.dropdown.dropdown;
进口流动性控制。*;
公共类sp2h扩展MovieClip{
公共变量gridSize:Number=225;
公共变量gridBreak:Number=15;
private var gridItems=new Array();
私有变量网格:MovieClip=new MovieClip();
公共变量:数字=1;
公共变量gridStatus:编号=0;
公共var dropDwn:MovieClip;
公共变量t:TextField;
public var dropDArray:Array=新数组({label:“大小0-15x15”,数据:225},{label:“大小1-18x15”,数据:270},{label:“大小2-18x18”,数据:324},
{标签:“尺寸3-21x18”,数据:378},{标签:“尺寸4-21x21”,数据:441},{标签:“尺寸5-24x21”,数据:504},
{标签:“尺寸6-24x24”,数据:576},{标签:“尺寸7-27x24”,数据:648},{标签:“尺寸8-27x27”,数据:729},
{标签:“尺寸9-30x27”,数据:810},{标签:“尺寸10-30x30”,数据:900},{标签:“尺寸11-33x30”,数据:990},
{标签:“尺寸12-33x33”,数据:1089},{标签:“尺寸13-36x33”,数据:1188},{标签:“尺寸14-36x36”,数据:1296},
{标签:“尺寸15-39x36”,数据:1404},{标签:“尺寸16-39x39”,数据:1521},{标签:“尺寸17-42x39”,数据:1638},
{标签:“尺寸18-42x42”,数据:1764});
public var dropDArray2:Array=新数组({label:“Hip&style”,数据:0},{label:“圣诞节”,数据:1},{label:“复活节”,数据:2},{label:“Slick”,数据:3});
公共功能sp2h(){
createGrid();
dropDwn=新的下拉列表();
dropDwn.x=50;
落差y=820;
dropDwn.init(dropDArray,150,25,“向上”);
addChild(dropDwn);
dropDwn.addEventListener(事件、更改、onDropDown);
createStatusField();
函数createStatusField():void
{
t=新文本字段();
t、 name=“tField”;
t、 x=350;
t、 y=100;
t、 可选=假;
t、 autoSize=TextFieldAutoSize.CENTER;
addChild(t);
}
函数onDropDown(事件:事件)
{
t、 text=event.target.selectedObject.label;
gridSize=event.target.selectedObject.data;
开关(网格大小){
案例225:
网格中断=15;
打破
案例270:
网格中断=18;
打破
案例324:
网格中断=18;
打破
判例378:
gridBreak=21;
打破
案例441:
gridBreak=21;
打破
案例504:
网格中断=24;
打破
案例576:
网格中断=24;
打破
案例648:
网格中断=27;
打破
判例729:
网格中断=27;
打破
案例810:
网格中断=30;
打破
案例900:
网格中断=30;
打破
案例990:
gridBreak=33;
打破
判例1089:
gridBreak=33;
打破
判例1188:
网格中断=36;
打破
判例1296:
网格中断=36;
打破
案例1404:
gridBreak=39;
打破
判例1521:
gridBreak=39;
打破
案例1638:
网格中断=42;
打破
判例1764:
网格中断=42;
打破
}
createGrid();
}
wtt1.addEventListener(MouseEvent.MOUSE_向下,wtt1_单击拖动);
函数wtt1\u ClickToDrag(事件:MouseEvent):void
{
wtt1.startDrag();
stage.addEventListener(KeyboardEvent.KEY_DOWN,myKeyDown);
函数myKeyDown(e:键盘事件):无效{
if(e.keyCode==Keyboard.SPACE){
旋转=旋转+1;
如果(旋转==5){
旋转=1;
}
跟踪(旋转);
wtt1.旋转和停止(旋转);
}
}
stage.addEventListener(MouseEvent.MOUSE\u UP,wtt1\u releaseTrop);
函数wtt1\u releasetorop(事件:MouseEvent):void
{
wtt1.stopDrag();
stage.removeEventListener(KeyboardEvent.KEY_DOWN,myKeyDown);
}}}
公共函数createGrid(){
removeGrid();//一个单独的函数,用于删除网格
addChildAt(网格,0);
gridStatus=1;
对于(变量i:int=0;i
变量仅在
private var gridItems:Array;
private var grid:MovieClip;
public function createGrid() {
removeGrid(); //a separate function that removes your grid
gridItems = new Array();
grid = new MovieClip();
addChildAt(grid, 0);
for (var i:int = 0; i < gridSize; i++) {
gridItems[i] = new tile();
gridItems[i].x = (i % gridBreak) * (gridItems[i].width );
gridItems[i].y = int(i / gridBreak) * (gridItems[i].height);
grid.addChild(gridItems[i]);
}
grid.x = stage.stageWidth/ 2 - grid.width/2;
grid.y = (stage.stageHeight - 100) / 2 - grid.height/2;
}
public function removeGrid():void {
//if the grid has a value already and has a parent (is on the stage), remove it
if(grid && grid.parent) removeChild(grid);
}