2011-07-21 12 views
2

私はこの奇妙な問題を抱えており、私はそれを理解できません。 私はキャラクターの座標を取得するためにlocalToGlobalを使用しており、レベルクリップでヒットテストポイントを実行しています。 Flash Player 10.1ではすべてがうまく動作します。 r52Flash Programming Local To Global問題

しかし、私は、フラッシュプレーヤー10.0 r22を実行している他のマシンで全く同じ.swfを開き、ヒットテストはうまくいきません。私は両親などをトレースし、すべてを試み

セットアップ:

メインクラス、私はゲームのクラス(スプライト)を追加し、メインクラスに。 ゲームクラスでは、レベルクラス(スプライト)とキャラクタークラス(スプライト)を追加します。

「カメラ」がキャラクターに続き、ゲームクラスが移動します。

ので

メイン(静的X & Y)> ゲーム(ダイナミックX & Y)> レベル(静的X & y)は&文字(ダイナミックX & y)の これは私のコードです:

private function checkLanded():Boolean 
    {//this code runs on the character class, so 'this' = character 
     var localPoint:Point = new Point(this.x, this.y + this.myHeight/2 + 1); 
     var globalPoint:Point = parent.localToGlobal(localPoint) 

     if (Settings.levelGround.hitTestPoint(globalPoint.x,globalPoint.y,true) || Settings.levelPlatforms.hitTestPoint(globalPoint.x,globalPoint.y,true)) 
     { 
      return true; 
     } 
     return false; 
    } 

このコードは、Flash Player 10.1では完全に動作しますが、10.0では動作しません。 10.0では、parent.globalToLocalを使用する代わりに、parent.parent.globalT o 10.0.1ではなく10.0で動作するLocal。

このコードをすべてのFlash Playerで実行するにはどうすればよいですか。

* * edit- 私はそれを固定して、何とかフラッシュ座標系を妨げたメインクラスのarroundを動かしました。私はその後、ゲームクラスのarroundを移動しようとし、それは動作するようです。メインクラスarroundのdoesntの仕事を動かす理由はまだ迷って...


が私を助けてください、事前に

おかげで、

エリックSombroek

+0

なぜあなたは親を全く使用していますか? CharacterがSpriteの子孫である場合、それ自体は 'localToGlobal'を持ちます。 – shanethehat

+0

@shanethehatはい、私も知っていますが、使用しても var globalPoint:ポイント= this.localToGlobal(新しいポイント(0,0))私は同じ結果を持っています – Erik

+0

コメントでコードをハイライトするためにバッククイックを使うことができます:) – shanethehat

答えて

0

を、これは座標を知るための方法ですステージを基準にした表示オ​​ブジェクト

public function getDisplayObjectsRootCoord(target:DisplayObject):Point{ 
    var coords:Point = target.localToGlobal(new Point()); 
    return coords; 
} 

マウスがアイテムの上にある場合...

var target:MovieClip; 
var stage:Stage;// make sure you have a reference to this 
var mouseOverPanel:Boolean = target.hitTestPoint(stage.mouseX,stage.mouseY,true);