2011-12-27 2 views
0

에서 (0,0)을 디폴트 (X, Y) :스프라이트 코드를 실행할 때 AS3

var cont:Sprite = new Sprite(); 
var a:Vector.<int > = Vector.<int > ([1,2]); 
var b:Vector.<Number > = Vector.<Number > ([0,0,40,40]); 
cont.graphics.lineStyle(5, 0x442299); 
cont.graphics.drawPath(a, b); 
addChild(cont); 
cont.x = 100; 
cont.y = 100; 
trace("X coordinate of purple line: ", cont.x); 

I 출력 GET "X 보라색 라인 좌표 : 100"그러나

을 이 코드를 테스트하고 마우스로 (140, 140)에 (100, 100)에서 선을 그립니다 :

var line:Sprite = new Sprite(); 

stage.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler); 
stage.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler); 

var startX:int = -1; 
var startY:int = -1; 

function mouseDownHandler(event:MouseEvent):void 
{ 
    startX = mouseX; 
    startY = mouseY; 
} 

function mouseUpHandler(event:MouseEvent):void 
{ 
    swype(Vector.<int> ([1,2]), Vector.<Number> ([startX,startY,mouseX,mouseY])); 
} 

function swype(commands:Vector.<int>, coords:Vector.<Number>):void 
{ 
    var container:Sprite = new Sprite(); 
    container.graphics.lineStyle(5, 0x0066CC); 
    container.graphics.drawPath(commands, coords); 
    addChild(container); 
    container.x = 100; 
    container.y = 100; 
    trace("X coordinate of blue line: ", container.x); 
} 

내가 출력을 얻을 : "X가 파란색 선 좌표 : 0"

화면상의 마우스 위치에서 좌표를 가져 와서 벡터에 추가 할 때 Sprite 컨테이너의 x 및 y 좌표는 기본적으로 0,0입니까?

답변

1

하지 당신이하고자하는하지만 당신은 당신이 주변에 그 _container를 계속 이동하면 localToGlobal 방법을 사용해야 할 수도 있습니다 무엇인지)

이 당신이 mouseX의 속성을 가져 곳의 상황과 관련이있다

및 mouseY. 디스플레이 스택과 mouseX 및 Y의 속성이 제공하는 것과 관련하여 디스플레이 스택에 대해 더 많이 생각해야합니다.

왜 작동하는지 이해할 수 없으면이 질문을 시도하고 질문을 보내주십시오.

package 
{ 

import flash.display.Sprite; 
import flash.display.StageQuality; 
import flash.display.StageScaleMode; 
import flash.events.MouseEvent; 

public class Testing extends Sprite 
{ 
    private var startX:Number; 
    private var startY:Number; 
    private var _container:Sprite = new Sprite(); 

    public function Testing() 
    { 
     stage.quality = StageQuality.BEST; 
     stage.align = "TL"; 
     stage.scaleMode = StageScaleMode.NO_SCALE; 

//  if you comment this it will stuff up the first swype 
     _container.x = _container.y = 100; 

     var cont:Sprite = new Sprite(); 
     var a:Vector.<int> = Vector.<int> ([1, 2]); 
     var b:Vector.<Number> = Vector.<Number> ([0, 0, 40, 40]); 
     cont.graphics.lineStyle (5 , 0x442299); 
     cont.graphics.drawPath (a , b); 
     addChild (cont); 
     cont.x = 100; 
     cont.y = 100; 

     trace ("X coordinate of purple line: " , cont.x); 
     var line:Sprite = new Sprite(); 

     addChild (_container); 
     stage.addEventListener (MouseEvent.MOUSE_DOWN , mouseDownHandler); 

     stage.addEventListener (MouseEvent.MOUSE_UP , mouseUpHandler); 
     var startX:int = - 1; 

     var startY:int = - 1; 
    } 

    function mouseDownHandler (event:MouseEvent):void 
    { 
     startX = _container.mouseX; 
     startY = _container.mouseY; 
    } 

    function mouseUpHandler (event:MouseEvent):void 
    { 
     swype (Vector.<int> ([1, 2]) , Vector.<Number> ([startX, startY, _container.mouseX, _container.mouseY])); 
    } 


    function swype (commands:Vector.<int> , coords:Vector.<Number>):void 
    { 

     _container.graphics.lineStyle (5 , 0x0066CC); 
     _container.graphics.drawPath (commands , coords); 
     //this moves it after the property was collected for the initial swype which you don't want 
     _container.x = 100; 
     _container.y = 100; 

     trace ("X coordinate of blue line: " , _container.x); 
    } 

} 

} 
관련 문제