2016-11-02 2 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; 
} 

Это возвращает следующее сообщение об ошибке при тестировании через 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() 

Можно ли предоставить рабочий код или совет о том, как исправить Эта проблема? Заранее спасибо.

+1

Вместо масштабирования сцены масштабируйте класс документа (основная шкала времени). Итак: 'this.scaleX * = e.scaleX;' – BadFeelingAboutThis

+0

Это сработало! Я, конечно, любитель при кодировании, но даже в этом случае я чувствую себя глупо, что пропустил это. Спасибо за вашу помощь. – Dustin

ответ

1

Stop масштабирование этап, его не правильный путь

переместить содержимое ребенка MovieClip, а не стадии, а затем масштабировать или просто использовать растровое изображение:

Вы должны сделать увеличение вместо этого. вы должны сначала сделать снимок вашей сцены, Средство рисовать всю сцену или только что желаемую область сцены, в растровый объект с вашей собственной матрицей преобразования (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

Смежные вопросы