2012-01-25 2 views
0

Я хочу, чтобы моя анимация ящика появилась слева направо, прямо сейчас мой бокс появляется сверху до buttom, как я могу изменить направление перемещения окна слева направо , у меня есть девять коробки и три друг на друга линии, как изображение нижеслева направо в Actionscript 3

enter image description here

вот мой текущий код

function random_item() 
{ 
    var listItem:Array = new Array(); 
    for (var i:uint=0; i<15; i++) 
    { 
     listItem.push(i); 
    } 
    ItemLeft = 0; 
    for (var x:uint=0; x<boardWidth; x++) 
    { 
     for (var y:uint=0; y<boardHeight; y++) 
     { 
      var thisItem:FirstBox = new FirstBox(); 
      thisItem.stop(); 
      thisItem.x = x * IcardHorizontalSpacing + IboardOffsetX; 
      thisItem.y = y * IcardVerticalSpacing + IboardOffsetY; 
      var r:uint = Math.floor(Math.random() * listItem.length); 
      thisItem.cardface = listItem[r]; 
      listItem.splice(r,1); 
      thisItem.addEventListener(MouseEvent.CLICK,clickItem); 
      thisItem.buttonMode = true; 
      addChild(thisItem); 
      ItemLeft++; 
     } 
    } 

} 

как я делаю анимацию слева направо, благодаря, прежде

+1

Там нет кода анимации, поэтому трудно сказать, что происходит не так. Но для создания анимации, идущей слева направо, просто увеличьте x-координату 'thisItem'. Очень простой способ создания анимаций - использовать TweenMax: http://www.greensock.com/tweenmax/ – Bakapii

ответ

0

Поскольку ваша вложенная петля for имеет положение y, вложенное внутри x-позиции, три позиции y (верхняя, средняя, ​​нижняя) будут отображаться для каждой позиции x.

Вы можете быть в состоянии исправить поведение, которое вы видите, структурируя свою for петлю, как показано ниже, переключая порядок переменных:

for (var y:uint=0; y<boardHeight; y++) 
{ 
    for (var x:uint=0; x<boardWidth; x++) 
    { 
     //Inner code remains the same 
    } 
} 

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

+0

Я пробовал, но кажется, что он работает как первый, направление по-прежнему от левого верхнего к левому нижнему –

0
//change 
for (var y:uint=0; y<boardHeight; y++) 

//to 
for (var y:uint=boardHeight; y>0; y--) 

Хотя в вашем коде вы вставляете петлю y внутри цикла x.
Это означает, что для каждой итерации X-цикла коробка будет идти снизу вверх
Я не знаю, является ли это то, что вы ищете.
Пожалуйста, будьте более конкретным в своем описании того, что вы хотите.

+0

да что я имею в виду, я изменил код, он работает только для первых трех боксов в верхней части (слева направо), но в другом окне нет (не отображается) –

0

Вы зацикливаете сначала на x, а затем на y. Это означает, что он добавит 3 элемента для каждого столбца. Инвертируйте петли, чтобы заставить его добавить 3 элемента для каждой строки.

function random_item() 
{ 
    var listItem:Array = new Array(); 
    for (var i:uint=0; i<15; i++) 
    { 
     listItem.push(i); 
    } 
    ItemLeft = 0; 
    for (var y:uint=0; y<boardHeight; y++) 
    { 
     for (var x:uint=0; x<boardWidth; x++) 
     { 
      var thisItem:FirstBox = new FirstBox(); 
      thisItem.stop(); 
      thisItem.x = x * IcardHorizontalSpacing + IboardOffsetX; 
      thisItem.y = y * IcardVerticalSpacing + IboardOffsetY; 
      var r:uint = Math.floor(Math.random() * listItem.length); 
      thisItem.cardface = listItem[r]; 
      listItem.splice(r,1); 
      thisItem.addEventListener(MouseEvent.CLICK,clickItem); 
      thisItem.buttonMode = true; 
      addChild(thisItem); 
      ItemLeft++; 
     } 
    } 

} 
Смежные вопросы