Skip to content

Instantly share code, notes, and snippets.

@merkuriy
Created December 6, 2016 08:49
Show Gist options
  • Save merkuriy/d0a96bc080c384c139973056b1149ba0 to your computer and use it in GitHub Desktop.
Save merkuriy/d0a96bc080c384c139973056b1149ba0 to your computer and use it in GitHub Desktop.
FlashMouseWheelBlock
function scrollHappened(wheelDelta:Number):void {
/* Этот метод позволяет JS API прокидывать вызов события скрола через ExternalInterface
* wheelDelta в JS API может переводиться в приближённый к AS стандарт,
* т. е. обычно это будет или -3 или +3, либо другие значения для более быстрой или медленной прокрутки >=+1 или <=-1)
* http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/events/MouseEvent.html#MouseEvent()
*/
var e:MouseEvent = new MouseEvent(MouseEvent.MOUSE_WHEEL, true, false, nativeStage.mouseX, nativeStage.mouseY, null, false, false, false, false, wheelDelta);
// нужно как-то идентифицировать, что это событие сгенерировано через JS API
e.isJS:Boolean = true;
nativeStage.dispatchEvent(e);
}
function noop():void {
/* Метод пустышка
*/
}
function onMouseWheel(e:MouseEvent):void {
/* Обработчик события скрола
*/
if (!('isJS' in e)) {
/* Если событие вызвано не через JS API, значит браузер успешно вызывает его сам,
* поэтому отменяем возможность генерировать событие через JS API
*/
ExternalInterface.addCallback('scrollHappened', noop);
}
}
/* Там где производится вызов JS Shower API метода после инициализации APP.initApp
*/
params = ExternalInterface.call('APP.initApp');
/* ...
* Только после успешной инициализации добавляем scrollHappened и onMouseWheel
*/
ExternalInterface.addCallback('scrollHappened', scrollHappened);
stage.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment