我正在创建一个工具,允许代表为我们的客户选择最好的产品。有人要求在移动设备上使用此工具。我想为用户提供捏合缩放的选项,以便在小型设备上更合适地使用该设备。
由于工具的性质,我无法将工具的内容放入影片剪辑并捏合缩放该影片剪辑。我搜索一个工作的AS3代码来捏合缩放舞台(以及舞台上的内容)已经空了。
我确实在Stack Overflow上找到了这段代码:
Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM , onZoom);
function onZoom (e:TransformGestureEvent):void{
stage.scaleX *= e.scaleX;
stage.scaleY *= e.scaleY;
}
通过Adobe Animate测试时返回以下错误:
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()
任何人都可以提供有关如何解决此问题的工作代码或建议吗?提前谢谢。
答案 0 :(得分: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);
如果想要平滑的动画缩放,您可以在事件监听器中使用步变量更新位图,这会根据手指之间的距离影响矩阵变化,而不是代码中的静态缩放