1
私は非常に単純な作業のように思える方法を模索してきました。 私はデルタ値が各機能の後に0にリセットされるので完全に機能するマウスホイールズーム機能を持っています。 ズームジェスチャーはそれほど単純ではありませんか? 私の問題は、ダイナミックスケールの制限を作成しようとしていることです(最大ズームは各レベルごとに異なります)。私が設定している最大の縮尺でズームが止まってしまい、ズームアウトできません。私はe.scaleXプロパティを使って方向を特定しようとしているので、ズームアウトすることができますが、正しく動作していません。AS3 - ズームジェスチャーはズーム方向を取得しますか?
ありがとうございました! コード:
Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM , onZoom);
function onZoom (e:TransformGestureEvent):void{
var zoomAmountGesture:Number = 0;
zoomAmountGesture = e.scaleX;
if (zoomAmountGesture <= 0){
container.scaleX *= e.scaleX;
container.scaleY *= e.scaleY;
if (container.scaleX < 1){
container.scaleX = 1;
container.scaleY = 1
}
}
if (zoomAmountGesture > 0){
container.scaleX *= e.scaleX;
container.scaleY *= e.scaleY;
if(4* BlockSize * container.scaleX > StageWidth){
trace("zoom too big");
var newBlockScale:Number = StageWidth/3;
var newBoardScale:Number = newBlockScale/BlockSize;
trace("newBoardScale = " + newBoardScale);
container.scaleX = newBoardScale;
container.scaleY = newBoardScale;
}
}
}
イベントscaleXプロパティとscaleYのプロパティが1ベースであるため、
は、次のブロックでは、意味がありません私はそれが私の質問に答えると思うので、私はあなたの答えを正しいものとしてマークしました。私はまだ自分の具体的な状況に問題がありますが、十分に説明したり、コードを十分に提供しなかったことがわかっています。私が抱えている問題は、すべてのレベルでvar BlockSizeが変化する(小さくなる)ことです。そのため、最大ズームは設定された量ではなく、そのレベルの相対ブロックサイズに基づいています。レベル1の最大ズームは1.2ですが、レベル10または20の最大ズームは4または5かもしれません。私はロジックを理解しようとしています。私はほとんどそこにいると思います。転送しますので、ありがとうございます! –
@ ZacKenny実際には、値の配列を使って最大ズームを設定することも、各ステージで** stage.stageWidth/BlockSize **で開始することもできます。 – Organis
はい!これはまさに私がやったことです。ヘルプ@オルガン!ありがとう! onZoom(e:TransformGestureEvent):void { \t var newBlockScale:Number = BlockSize * 4; \t \t var PredefinedMaxScale:Number = StageWidth/newBlockScale; \tトレース( "PredefinedMaxScale =" + PredefinedMaxScale); var aScale:Number = container.scaleX * e.scaleX; if(aScale <1){aScale = 1;} if(aScale> PredefinedMaxScale){aScale = PredefinedMaxScale;} container.scaleX = aScale; container.scaleY = aScale; } –