2015-08-21 2 views
0

Я делаю шутер сверху вниз в Flash CS4 с использованием AS3.Использование localToGlobal во Flash CS4 AS3

Когда я стреляю в пули. Я установил его исходную позицию как player.x и player.y. Но именно здесь находится «голова» мувиклипа. Я хочу, чтобы он был создан с того места, где находится «Пистолет».

Я сделал еще один мувиклип внутри мувиклипа игрока под названием «NewShootingPoint» и расположил его там, где находится пистолет.

Я не могу найти правильные локальные ссылкиToGlobal, чтобы посоветовать мне. Я знаю, что localToGlobal преобразует локальную позицию мувиклипа в глобальную позицию. Но как мне это сделать?

Я попытался это: (Новый кодекс)

package { 

import flash.display.MovieClip; 
import flash.geom.Point; 
import flash.display.Stage; 
import flash.events.MouseEvent; 
import flash.events.Event; 

public class Main extends MovieClip { 

    //var myPoint : Point = new Point(340.1, 232.2); 
    var player : Player = new Player; 
    var origin : Gun = new Gun(); 
    var bullet : Bullet = new Bullet();  

    public function Main() { 

     stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler); 
     player.x = stage.stageWidth/2; 
     player.y = stage.stageHeight/2; 
     stage.addChild(player); 

    } 

    function onMouseDownHandler(e:Event) { 

     // I want this to happen. 
     bullet.x = origin.x; 
     bullet.y = origin.y; 
     // But it's still stuck at (0,0) 
     stage.addChild(bullet); 
     bullet.addEventListener(Event.ENTER_FRAME, thingy); 

    } 

    function thingy(e:Event) { 

     bullet.x += 10; 
     bullet.y += 10; 

    } 

} 

} 

Да. Я знаю, что должен использовать классы. Я сделаю это позже. Пожалуйста, советую для этого!

+0

localToGlobal используется, чтобы получить координаты объекта в зависимости от стадии, но так как вы добавите все на сцену, чтобы начать с localToGlobal не имеет смысла для вас. – BotMaster

ответ

0

The documentation on localToGlobal is here.

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

В моем опыте, хотя это инстинктивно использовать x, y вашего целевого объекта как локальную точку, часто проще просто использовать целевой объект в качестве локального координатного пространства с точкой 0,0. Например, в вашем случае это будет:

var bulletOrigin:Point = player.shootingPoint.localToGlobal(new Point(0, 0)); 
Смежные вопросы