2014-12-22 3 views
0
package { 
import com.greensock.*; 
import flash.display.*; 
import flash.events.*; 
import flash.geom.*; 

public class shieet extends Sprite 
{ 
    public function shieet() 
    { 
     var PosY:Number = Math.floor(Math.random()*(stage.stageHeight-30)); 
     var PosX:Number = 0; 
     var PosX2:Number = 500; 

     var CircleBlue:MovieClip = new MovieClip(); 
     CircleBlue.graphics.lineStyle(2, 0); 
     CircleBlue.graphics.beginFill(0x0000FF); 
     CircleBlue.graphics.drawCircle(PosX,PosY,30); 
     graphics.endFill(); 
     addChild(CircleBlue); 

     PosY = Math.floor(Math.random()*(stage.stageHeight-30)); 
     var CircleRed:MovieClip = new MovieClip(); 
     CircleRed.graphics.lineStyle(2, 0); 
     CircleRed.graphics.beginFill(0xFF0000); 
     CircleRed.graphics.drawCircle(PosX2,100,30); 
     graphics.endFill(); 
     addChild(CircleRed); 
     stage.addEventListener(MouseEvent.CLICK,move_circle); 

     function move_circle(event:MouseEvent):void { 

       TweenLite.to(CircleBlue,4, {x:PosX2, y:100}); 

                } 
    } 
}} 

Это мой код для перемещения синего круга к красному кругу.TweenLite AS3 isse с движущимся объектом

Перед событие мыши: https://api.monosnap.com/image/download?id=nLQQXmInSsSCqhRxjF2XaneWUpnVWm

После события мыши: https://api.monosnap.com/image/download?id=KhiUFE97lNbVkkSoVlxfsfyUeJM2v1

Как вы можете видеть, ось х красного круга установлена ​​на 500, у оси устанавливаются на 100. TweenLite пункта назначения устанавливаются на красный окружность x и 100. Но она движется только до оси X, как и намеренное поведение оси y, странное, как черт. Похоже, он переместится на +100 пунктов с текущего местоположения синего круга, а не на 100 с 0. Я даже не знаю, что делать, попробовал так много всего.

ответ

0

Проблема в том, что точки происхождения по-прежнему находятся в 0,0 для красных и синих кругов. Попробуйте это вместо этого ...

package { 
    import com.greensock.*; 
    import flash.display.*; 
    import flash.events.*; 
    import flash.geom.*; 

    public class shieet extends Sprite { 
     public function shieet() { 
      var PosY:Number = Math.floor(Math.random()*(stage.stageHeight-30)); 
      var PosX:Number = 0; 
      var PosX2:Number = 500; 

      var CircleBlue:MovieClip = new MovieClip(); 
      CircleBlue.graphics.lineStyle(2, 0); 
      CircleBlue.graphics.beginFill(0x0000FF); 
      CircleBlue.graphics.drawCircle(0,0,30); 
      graphics.endFill(); 
      addChild(CircleBlue); 
      // Now that the graphic is on the center of the MC, move the MC, not the drawing. 
      CircleBlue.x = PosX; 
      CircleBlue.y = Math.floor(Math.random()*(stage.stageHeight-30)); 

      PosY = Math.floor(Math.random()*(stage.stageHeight-30)); 
      var CircleRed:MovieClip = new MovieClip(); 
      CircleRed.graphics.lineStyle(2, 0); 
      CircleRed.graphics.beginFill(0xFF0000); 
      CircleRed.graphics.drawCircle(0,0,30); 
      graphics.endFill(); 
      addChild(CircleRed); 
      CircleRed.x = PosX2; 
      CircleRed.y = 100; 

      stage.addEventListener(MouseEvent.CLICK,move_circle); 

      function move_circle(event:MouseEvent):void { 
       TweenLite.to(CircleBlue,4, {x:PosX2, y:100}); 
      } 
     } 
    } 
} 
+0

Спасибо за ответ, не знал, что вам нужно указать конкретные оси x и y после добавления круга. Я немного изменил код, так что синие и красные круги появляются на случайной оси Y, а синий - на красный. –

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