2011-12-27 11 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出力 "は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); 
} 

Iが出力を得る: "Xは青線の座標:0"

画面上のマウスの位置から座標を取得してベクトルに追加すると、Spriteコンテナのx座標とy座標はデフォルトで0,0になります。

答えて

1

ないあなたがやりたいと思っているのかわからなく、あなたの周りにその_containerを動かし続ける場合は、それぞれlocalToGlobalメソッドを使用する必要があるかもしれません;)

これは、あなたがするmouseXのプロパティを取得する場所の状況に関係していますマウスY。 ディスプレイスタックと、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); 
    } 

} 

} 
関連する問題