2017-09-15 7 views
0

私は、それぞれが、多くの子供のAS3ドラッグ問題

stage.addEventListener(TouchEvent.TOUCH_BEGIN, fl_TouchBeginHandler); 
stage.addEventListener(TouchEvent.TOUCH_MOVE, fl_TouchMoveHandler); 

var last_posY: Number; 
function fl_TouchBeginHandler(eve: TouchEvent): void { 

    last_posY= eve.stageY; 
} 
function fl_TouchMoveHandler(eve: TouchEvent): void { 
    for(var i=0;i<movieClipsArray.lenght;i++){ 
     movieClipsArray[i].y-=eve.stageY - delta_posY; 
} 
    last_posY= eve.stageY; 
} 

イムは、私は空が、しばらくあるステージの一部で糖剤ときすべてのものが機能するムービークリップのリストにスクロールしようとしているムービークリップのリストを持っています(例えば、何もせずにスクロールしながら)ムービークリップをドラッグすると、何らかのデバッグが行われた後、私が潜んでいて、eve.targetが変更されたことがわかりました(ムービークリップのネストされた子から別のものへ) eve.stageYは、その揺れの原因となる配線方法を変更します。どうすればそれを防ぐことができますか?

答えて

0

あなたの問題は、yの位置を計算する方法に最も似ています。あなたはそれが相対になりたい場合は、

言っ
var direction:int = eve.stageY > lastPosY ? 1 : -1; //if the latest mouse/touch position is greater than before (lower on the screen), use a value of 1 (down) 
movieClipsArray[i].y -= delta_posY * direction; //multiply the delta by the direction 

、あなたはそれがはるかに簡単に使用するかもしれません(ダウンだけstageYという値を使用してアップ決定するか)だけでデルタ値を使用する必要があると思いますそのコンテナをスクロールします。 AnimateCCを使用している場合は、すべてのクリップを選択してF8キーを押し、それらをすべて含む新しいMovieClipを作成します。または、コードを通してそれを実行します。

var container:Sprite = new Sprite(); 
addChild(container); 

container.addChild(mc1); //do this for all your clips instead of using an array 

そして、そのようなあなたのコードを変更:aloot

stage.addEventListener(TouchEvent.TOUCH_BEGIN, fl_TouchBeginHandler); 
stage.addEventListener(TouchEvent.TOUCH_MOVE, fl_TouchMoveHandler); 

var offset: Number = 0; 
function fl_TouchBeginHandler(eve: TouchEvent): void { 
    offset = container.y - eve.stageY; 
    //offset is the initial difference between the touch point and container's y. You use this to make sure it doesn't jump when you first touch it 
} 

function fl_TouchMoveHandler(eve: TouchEvent): void { 
    container.y = eve.stageY + offset 
} 
+0

親愛なるBadFeelingAboutThisのおかげで、私はそれを明確にすることができませんでした悪い英語のため、私の場合について私が考えます私はPHP側からデータを取得する私のゲームのプレイヤーのムービークリップの配列を持っていますが、これらのプレーヤームービークリップのそれぞれには、プレイヤーピクチャ、ボタンなどのいくつかの他のムービークリップが含まれています。イベントリスナーをステージ –

+0

に移動しますが、プレイヤーのムービークリップ上で行うと、私がドラッグすると、そのイベントによってチャイルドムービークリップがターゲットとして認識され、 eve.stageYのために、私はeve.stopPropagation()のようなものを試しています。それは問題を解決しましたが、子供が出てこない部分(自らの段階)は潜ることができ、あなたの助けを全面的に投稿することができますhttps://stackoverflow.com/questions/31328666/flash-as3-how-to-disable-child -swf-mouse-clicks-dis-disabling-mouse-hove –

+0

eve.stopPropagation()は問題をほぼ解決しましたが、私の問題はステージイベントがバブルした子供がstageYを認識したことです。イベントリスナー –