2016-11-02 7 views
2

私は、代理店がお客様に最適な製品を選択するためのツールを作成しています。このツールは、モバイルデバイスで使用する必要があります。私は小さなデバイスでより適切にデバイスを使用するために、ユーザーにピンチ・ズーム・オプションを提供したいと考えています。AS3 - ピンチとズームのジェスチャーを使用してステージ

ツールの性質上、ツールのコンテンツをムービークリップに入れて、そのムービークリップをピンチズームすることはできません。ステージ(ステージ上のコンテンツ)をピンチ・ズームするための作業用AS3コードの検索が空になりました。

私は、スタックオーバーフロー上でこのコードを見つけた:アドビアニメーションを通してそれをテストするとき

Multitouch.inputMode = MultitouchInputMode.GESTURE; 

stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM , onZoom); 
function onZoom (e:TransformGestureEvent):void{ 
    stage.scaleX *= e.scaleX; 
    stage.scaleY *= e.scaleY; 
} 

これは、次のエラーが返されます。

Error: Error #2071: The Stage class does not implement this property or method. 
    at Error$/throwError() 
    at flash.display::Stage/set scaleX() 
    at Beta04_fla::MainTimeline/onZoom()[Beta04_fla.MainTimeline::frame501:5] 
    at runtime::ContentPlayer/simulationSendGestureEvent() 
    at runtime::SimulatedContentPlayer/clientSocketDataHandler() 

誰が解決する方法に取り組んコードやアドバイスを提供することができますこの問題?前もって感謝します。舞台をスケーリング

+1

ステージを拡大縮小する代わりに、ドキュメントクラス(メインタイムライン)を拡大/縮小します。だから: 'this.scaleX * = e.scaleX; ' – BadFeelingAboutThis

+0

これはうまくいった!私は確かにコーディングのアマチュアですが、それでも、私はこれを逃して馬鹿だと感じます。ご協力いただきありがとうございます。 – Dustin

答えて

1

停止、

そのない正しい方法は、スケールまたは単にビットマップを使用し、その後、むしろ段階よりも子のムービークリップに、あなたの内容を移動

あなたが代わりに倍率をしなければなりません。 最初にステージのスナップショットを作成する必要があります ステージの全体を描画するか、ステージの領域を自分の変換マトリックス(matrix.scale(2,2))を持つビットマップオブジェクトに描画してからカットしてくださいあなたの好きなサイズにして、単純にあなたのクライアントに新しい一時的なムービークリップとしてそれを好む。

var bitmapData:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight); 
var matrix:Matrix = new Matrix(); 
matrix.translate(-50,-50); // moves your stage under magnifier 
matrix.scale(3,3); // magnification 
bitmapData.draw(stage, matrix); 

// And to actually see it 
var bitmap:Bitmap = new Bitmap(bitmapData); 
this.addChild(bitmap); 

enter image description here

スムーズなアニメーションズームをしたい場合にも、あなたの代わりに私のコードの静的ズームで、指の間の距離に応じて行列の変化に影響を与え、あなたのイベントリスナーのステップ変数を使用してビットマップを更新することができます

+0

あなたの答えを感謝しますが、私が述べたように、ツールをムービークリップに入れることは問題でした。 @BadFeelingAboutあなたの答えが働くかもしれませんが、上記の答えが得られました。ご返信ありがとうございます。 – Dustin

関連する問題