Arrays 动作脚本3,Flash CC:将对象从库中放置到舞台上
你好,stackoverflow的编程大师,我希望你们中至少有一位能够帮助我解决编码问题。这是我第一次在这个网站上发帖,所以如果我错过了一些关于我的帖子结构的东西,或者任何东西,请让我知道,最好不要屈尊俯就,我会很高兴地改变它 实际上,我有一个不同的问题要问,但我最近意识到我的图书馆里的一些东西没有出现在我的舞台上。希望,如果这个问题得到解决,我就不会有其他问题了 我正在使用Flash CC和Actionscript 3创建一个学习模块应用程序,我想我对Flash相当精通,但现在我所有的代码都在时间线上,因为我开始时不知道软件包的设置。当我完成学习模块时,我将尝试将所有内容移动到AS软件包中,请耐心等待 这个模块的当前框架是一个拖拽游戏,用户拖曳正确的食物,为他们在前一帧中选择的动物,在中间的动物。这只动物被动态地放在舞台上,还有一系列六种可能的食物选择,所有的电影都是从图书馆里取来的。食物元素的排列实际上并不是我的问题,它们出现在我的舞台上一点问题都没有。我遇到的问题是,当用户将正确的食物拖到动物身上,并且满足获胜条件时,气球元素数组不会出现在舞台上。我觉得这很奇怪,因为我对食物和气球数组使用了几乎相同的代码 这是我的全部代码:Arrays 动作脚本3,Flash CC:将对象从库中放置到舞台上,arrays,actionscript-3,flash,movieclip,Arrays,Actionscript 3,Flash,Movieclip,你好,stackoverflow的编程大师,我希望你们中至少有一位能够帮助我解决编码问题。这是我第一次在这个网站上发帖,所以如果我错过了一些关于我的帖子结构的东西,或者任何东西,请让我知道,最好不要屈尊俯就,我会很高兴地改变它 实际上,我有一个不同的问题要问,但我最近意识到我的图书馆里的一些东西没有出现在我的舞台上。希望,如果这个问题得到解决,我就不会有其他问题了 我正在使用Flash CC和Actionscript 3创建一个学习模块应用程序,我想我对Flash相当精通,但现在我所有的代码都在
import flash.display.MovieClip;
import flash.events.MouseEvent;
foodPet();
function foodPet():void {
//all of my pet, food, and balloon library objects have been exported for AS
var theBird:pet_bird = new pet_bird;
var theCat:pet_cat = new pet_cat;
var theChicken:pet_chicken = new pet_chicken;
var theDog:pet_dog = new pet_dog;
var theDuck:pet_duck = new pet_duck;
var theGuinea:pet_guinea = new pet_guinea;
var theHamster:pet_hamster = new pet_hamster;
var birdSeed:food_bird_seed = new food_bird_seed;
var catFood:food_cat_food = new food_cat_food;
var chickenFeed:food_chicken_feed = new food_chicken_feed;
var chocolate:food_chocolate = new food_chocolate;
var dogFood:food_dog_food = new food_dog_food;
var duckFood:food_duck_food = new food_duck_food;
var animalList:Array = [theBird, theCat, theChicken, theDog,
theDuck, theGuinea, theHamster];
var food1Array:Array = [birdSeed, catFood, chickenFeed,
chocolate, dogFood, duckFood, 4];
var xPosFood:Array = new Array();
var yPosFood:Array = new Array();
xPosFood = [32, 71, 146, 363, 431, 512];
yPosFood = [304, 222, 123, 123, 222, 304];
var animalClip:MovieClip;
animalClip = animalList[chosenAnimal];
addChild(animalClip);
animalClip.x = 256;
animalClip.y = 287;
animalClip.name = "selectedAnimal";
for (var i:uint = 0; i < food1Array.length - 1; i++){ //Where the food gets added
var isItRight:Boolean = false;
var foodName:String = ("food" + i);
var foodClip:MovieClip;
foodClip = food1Array[i];
foodClip.x = xPosFood[i];
foodClip.y = yPosFood[i];
foodClip.name = foodName;
addChild(foodClip);
trace(foodClip.parent);
foodDragSetup(foodClip, animalClip, food1Array[food1Array.length - 1], isItRight);
}
}
function foodDragSetup(clip:MovieClip, targ:MovieClip, correctNum:uint, isItRight:Boolean) {
var beingDragged:Boolean = false;
var xPos:Number = clip.x;
var yPos:Number = clip.y;
clip.addEventListener(MouseEvent.MOUSE_DOWN, beginDrag);
function beginDrag(event:MouseEvent):void
{
clip.startDrag();
if (int(clip.name.substr(4)) == correctNum){
isItRight = true;
}
this.beingDragged = true;
setChildIndex(clip, numChildren - 1);
clip.addEventListener(MouseEvent.MOUSE_UP, endDrag);
}
function endDrag(event:MouseEvent):void
{
if (this.beingDragged) {
this.beingDragged = false;
clip.stopDrag();
if ((isItRight) && (clip.hitTestPoint(targ.x, targ.y, true))){
trace(targ.name + " has been hit.");
clip.x = targ.x;
clip.y = targ.y;
win_animal_food();
} else {
isItRight = false;
clip.x = xPos;
clip.y = yPos;
}
}
}
}
function win_animal_food():void {
const BALLOON_ROW:int = 4;
var count:uint = 0;
var altX:uint = 0;
var bBalloon:blue_balloon = new blue_balloon;
var gBalloon:green_balloon = new green_balloon;
var oBalloon:orange_balloon = new orange_balloon;
var pBalloon:purple_balloon = new purple_balloon;
var rBalloon:red_balloon = new red_balloon;
var yBalloon:yellow_balloon = new yellow_balloon;
var balloonList:Array = [bBalloon, gBalloon, oBalloon,
pBalloon, rBalloon, yBalloon, bBalloon, gBalloon,
oBalloon, pBalloon, rBalloon, yBalloon, bBalloon,
gBalloon, oBalloon, pBalloon];
var balloonY:Array = [144, -205, -265, -325];
var balloonX:Array = [0, 140, 284, 428, 68, 212, 356, 500];
for (var ballY:uint = 0; ballY < balloonY.length; ballY++){ //Where balloons
for (var ballX:uint = altX; ballX < altX + BALLOON_ROW; ballX++){ //get added
var balloonName:String = ("balloon" + count);
var balloonClip:MovieClip;
balloonClip = balloonList[count];
balloonClip.x = balloonX[ballX];
balloonClip.y = balloonY[ballY];
balloonClip.name = balloonName;
addChild(balloonClip);
trace(balloonClip.parent);
trace(balloonClip + " has been added!");
balloonClip.addEventListener(MouseEvent.CLICK, balloonPop);
count++;
}
if (altX == 0) {
altX = BALLOON_ROW;
} else {
altX = 0;
}
}
function balloonPop(event:MouseEvent):void {
event.target.play();
event.target.removeEventListener(MouseEvent.CLICK, balloonPop);
}
}
他们都出现在舞台上,所以电影的口吻没有问题
添加:BallooXarray和BallooYarray的第一个值最初分别为-4和-145,但当我开始出现问题时,我想确保气球显示出来,因此我将第一个值设置为0和144气球高度和宽度都为144,其十字不确定其名称在左上角
添加:BalloodList中存在同一引出序号的多个实例的原因是我需要四行四个引出序号,但只有六个不同的引出序号
我知道气球在舞台上,因为调试显示在可视舞台上显示它们的x和y值。使用tracefoodClip.parent和traceballoonClip.parent可以显示气球和食物都具有相同的父级main timeline,因此我知道气球不会添加到不同的空间
我在网上搜索过,但没有遇到任何人有类似的问题。因此,我在这个论坛上问,是否有人能告诉我为什么我的气球不会出现在舞台上
请接受并感谢您。我在baloonList中直接看到的一件事是,您多次列出了相同的对象实例。每个实例只能在舞台上存在一次。如果添加一个已在后台的实例,则该实例将首先被删除,然后重新添加到显示列表的顶部 您应该更改:
var bBalloon:blue_balloon = new blue_balloon;
var gBalloon:green_balloon = new green_balloon;
var oBalloon:orange_balloon = new orange_balloon;
var pBalloon:purple_balloon = new purple_balloon;
var rBalloon:red_balloon = new red_balloon;
var yBalloon:yellow_balloon = new yellow_balloon;
var balloonList:Array = [bBalloon, gBalloon, oBalloon,
pBalloon, rBalloon, yBalloon, bBalloon, gBalloon,
oBalloon, pBalloon, rBalloon, yBalloon, bBalloon,
gBalloon, oBalloon, pBalloon];
致:
要立即检查的基本事项:您选择的坐标位置是否可见?追踪气球的宽度/高度,看看这是否是您所期望的。检查BalloodClip.stage是否不为null,它将一直检查显示列表。为什么气球阵列中多次出现同一气球实例?这就是你所认为的吗?@AndySavage感谢你对我的问题进行查看和评论!气球的高度和宽度分别为144px,在左上角有一个十字,我的原始气球阵列以-145开始,原始气球阵列以-4开始,但由于我开始遇到问题,我决定更改第一个x和y值,以便它显示在屏幕144,0上。跟踪BallodClip.stage将提供[object stage]。至于气球实例的倍数,我只有六个不同的气球,但我需要做四行四个气球。我希望这有助于澄清一些事情。我在baloonList中直接看到的一件事是,您多次列出了相同的对象实例。每个实例只能在舞台上存在一次。如果您添加了一个已经在后台的实例,该实例将首先被删除,然后重新添加到显示列表的顶部。这正是问题所在!我可能早该知道。非常感谢您@PatrickGunderson!
var bBalloon:blue_balloon = new blue_balloon;
var gBalloon:green_balloon = new green_balloon;
var oBalloon:orange_balloon = new orange_balloon;
var pBalloon:purple_balloon = new purple_balloon;
var rBalloon:red_balloon = new red_balloon;
var yBalloon:yellow_balloon = new yellow_balloon;
var balloonList:Array = [bBalloon, gBalloon, oBalloon,
pBalloon, rBalloon, yBalloon, bBalloon, gBalloon,
oBalloon, pBalloon, rBalloon, yBalloon, bBalloon,
gBalloon, oBalloon, pBalloon];
var balloonList:Array = [
new blue_balloon,
new green_balloon,
new orange_balloon,
new purple_balloon,
new red_balloon,
new yellow_balloon,
new blue_balloon,
new green_balloon,
new orange_balloon,
new purple_balloon,
new red_balloon,
new yellow_balloon,
new blue_balloon,
new blue_balloon,
new green_balloon,
new orange_balloon,
new purple_balloon
];