ActionScript 3 Добавление изображений; разные позиции - PullRequest
0 голосов
/ 04 июля 2018

Короче, у меня есть кликабельные объекты с разными цветами. Я хочу, чтобы эти цвета при нажатии появлялись в моих заполнителях (их будет 6). В настоящее время мне удалось кодировать так, чтобы при нажатии на любой цвет он помещался в первый заполнитель.

Каким образом я могу кодировать, чтобы распознать, что первый заполнитель заполнен и что после заполнения второй заполнитель должен стать целью?

Желательно, чтобы 6-й был заполнен, а затем остановлен, чтобы пользователь мог видеть все 6.

Я думаю, что-то вроде цикла for подойдет, но я не уверен, как это сделать.

Пока это выглядит примерно так:

//Placeholder
var placeHolder1:MovieClip = new MovieClip();
    placeHolder1.x = 20;
    placeHolder1.y = 245;
    stage.addChild(placeHolder1);
//Placeholder2 (UNUSED CURRENTLY)
var placeHolder2:MovieClip = new MovieClip();
    placeHolder2.x = 60;
    placeHolder2.y = 245;
    stage.addChild(placeHolder2);


//Click and select colours
var newBlue:cBlue = new cBlue();
numBlue.addEventListener(MouseEvent.CLICK, fBlue)
function fBlue(e:MouseEvent){
    placeHolder1.addChild(newBlue);
}

var newRed:cRed = new cRed();
numRed.addEventListener(MouseEvent.CLICK, fRed)
function fRed(e:MouseEvent){
    placeHolder1.addChild(newRed);
}

1 Ответ

0 голосов
/ 04 июля 2018

Во-первых, вы, вероятно, хотите узнать о Arrays (или Vectors ). Массивы / векторы - это списки, поэтому вы должны поместить все ваши заполнители в массив:

var placeHolders:Array = [placeHolder1, placeHolder2];

Хотя, поскольку для создания заполнителя есть формула, вы, вероятно, захотите сделать это в цикле, чтобы сделать его DRY er ( D on't R Epeat Y себя)

Этот цикл создаст 10 заполнителей и добавит их в массив:

var placeholders:Array = new Array();

for(var i:int=0; i < 10; i++){
    var placeHolder = new Sprite(); //if your not using timelines, just use Sprite instead of MovieClip as it's less overhead
    placeHolder.x = 20 * (i + 1);  //i starts at 0, and goes to 9
    placeHolder1.y = 245;
    stage.addChild(placeHolder);  //add it to the display list
    placeholders.push(placeHolder);  //add it to the array
}

Теперь (продолжая быть СУХОЙ), подключил один и тот же слушатель событий ко всем вашим цветным кнопкам:

numBlue.addEventListener(MouseEvent.CLICK, selectColor);
numRed.addEventListener(MouseEvent.CLICK, selectColor);

В этом обработчике событий я вызвал 'selectColor' (см. Комментарии к коду)

function selectColor(e:Event):void {
    //get the first element in the array
    var placeHolder:Sprite = placeholders.shift(); //shift removes the first item from the array, and returns it
    placeHolder.addChild(e.currentTarget);  //e.currentTarget refers to item that you attached the event listener to, in this case either numBlue or numRed
}

Таким образом, чтобы подвести итог, он получает первый заполнитель в массиве, удаляет этот элемент из массива, а затем добавляет цветную кнопку, которая была нажата как дочерний элемент этого заполнителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...