В моей библиотеке есть различные иконки еды, конвертированные и связанные как мувиклипы, которые я динамически добавляю в сцену. Я пытаюсь переместить их из одного контейнера в другой. Контейнеры также динамически добавляются в MovieClips.
Я пытался переместить эти значки, которые являются экземплярами «расширенного класса MovieClip», в другой MovieClip как дочерний элемент путем перетаскивания, но с помощью currentTarget in drop (это нормально вdrag) не распознается как MovieClip даже при использовании «currentTarget as MovieClip», и компилятор выдает ошибку. Каждый след указывает, что это действительно MovieClip. Я в своем уме.
"plate.addChild (mc);"вызывает ошибку при падении в «тарелку» с «полки».
.fla файл: https://1drv.ms/u/s!ApqQOqYhGvWHget1A4YRqyzT3a9BEQ?e=9UJB0R
import flash.display.Sprite;
import flash.display.MovieClip;
/*;
choValues = {
"apple": 15,
"bakedBeans": 15,
"chickenLeg": 0,
"chickenNuggets": 15,
"cornOnTheCob": 15,
"egg": 0,
"grapes": 5,
"hamburger": 30,
"milkFull": 24,
"juiceFull": 30,
"juiceHalf": 15,
"saltineCrackers": 5,
"orange": 15,
"tomato": 5
}*/
var foodNames:Array = new Array();
var choValues:Array = new Array();
var options:Array = new Array();
var index:Array = new Array();
var shelves:MovieClip = new Shelves();
var plate:MovieClip = new Plate();
var plateSlots:Array = [0,0,0,0];
var iconSize:Array = new Array();
trace(stage.stageWidth);
trace(stage.stageHeight);
var relativeWidth:Number = stage.stageWidth/32;
var relativeHeight:Number = stage.stageHeight/32;
trace("shelves");
trace(shelves.x = relativeWidth*4 );
trace(shelves.y = relativeHeight*8);
trace(shelves.width = relativeWidth*10);
trace(shelves.height = relativeHeight*14);
stage.addChildAt(shelves,1);
trace("plate");
plate.instanceName = "plate";
trace(plate.x = relativeWidth*15 );
trace(plate.y = relativeHeight*8);
trace(plate.width = relativeWidth*10);
trace(plate.height = relativeHeight*14);
plate.name = "plate";
stage.addChildAt(plate,0);
trace("plate.name "+ plate.name);
/*var fruit = new orange;
trace("fruit");
trace(fruit.x = plate.width/2);
trace(fruit.y = plate.height/2);
//trace(plateSlots.width = plate.width/2);
//trace(plateSlots.height = plate.height/2);*/
//plate.addChild(fruit);
function drag (e:MouseEvent):void //find the slot
{
e.currentTarget.startDrag();
trace("drag "+e.currentTarget.name);
trace("Classname "+ getQualifiedClassName(e.currentTarget));
}
function drop (e:MouseEvent):void
{
e.currentTarget.stopDrag();
trace("drop Classname "+ getQualifiedClassName(e.currentTarget));
trace("drop name "+ (e.currentTarget.name));
//if(e.currentTarget.dropTarget !=null)
//if(e.currentTarget.dropTarget.parent !=null)
//if(e.currentTarget.dropTarget.parent.parent != null)
try{if (e.currentTarget.dropTarget.parent.parent.name == "plate")
{
trace("currentTarget is "+e.currentTarget);
var mc:MovieClip = MovieClip(e.currentTarget);
trace(mc);
trace("mc is movieClip?" + (mc is MovieClip));
trace("is plate");
for (var i=0; i<4; i++)
{
if (plateSlots[i] == 0)
{
trace(mc);
//shelves.removeChild(mc);
plate.addChild(mc);
//e.currentTarget.width = iconSize[0];
//e.currentTarget.height = iconSize[1];
trace(mc.x = plate.width/6 + ((i%2)*plate.width/8));
trace(mc.y = plate.height/6 + ((i<2 ? 0:1)*plate.height/4));
plateSlots[i] = 1;
mc.slot = i;
return;
}
}
}
else{
shelves.addChild(e.currentTarget as MovieClip);
e.currentTarget.x = e.currentTarget.oldX;
e.currentTarget.y = e.currentTarget.oldY;
}
}
catch(e:Error){}
shelves.addChild(e.currentTarget as MovieClip);
e.currentTarget.x = e.currentTarget.oldX;
e.currentTarget.y = e.currentTarget.oldY;
}
function randomize ( a : *, b : * ) : int {
return ( Math.random() > .5 ) ? 1 : -1;
}
foodNames.push(
"apple","bakedBeans","chickenLeg",
"chickenNuggets","cornOnTheCob","egg",
"grapes","hamburger","milkFull",
"juiceFull","juiceHalf","saltineCrackers",
"orange","tomato"
)
choValues.push(
15,15,0,
15,15,0,
5,30,24,
30,15,5,
15,5
)
for (var i:int=1; i<foodNames.length; i++)
{
index.push(i);
}
index.sort(randomize);
trace(index);
for(i=0; i<8; i++)
{
options[index[i]] = new (getDefinitionByName(foodNames[index[i]]));
trace("class "+getDefinitionByName(foodNames[index[i]]));
options[index[i]].addEventListener(MouseEvent.MOUSE_DOWN, drag);
options[index[i]].addEventListener(MouseEvent.MOUSE_UP, drop);
options[index[i]].CHO = choValues[i];
options[index[i]].x += ( (2*(i%4)) +1 ) *(shelves.width /10);
options[index[i]].y = ( ( i<4 ) ? 17 : 37 )*(shelves.height/64);
options[index[i]].oldX = options[index[i]].x;
options[index[i]].oldY = options[index[i]].y;
shelves.addChild(options[index[i]]);
}
//iconSize[0] = options[index[0]].width;
//iconSize[1] = options[index[0]].height;
stop();