Возможно ли отправить нажатие клавиши и перемещение мыши на flash-объекты из javascript?

#flash

#flash

Вопрос:

Можно ли отправить нажатие клавиши и перемещение мыши на flash-объекты из javascript для целей тестирования?

Ответ №1:

Смотрите документы SWFObject (особенно getObjectById и embedSWF) и flash.external.ExternalInterface

В ActionScript,

 package
{
    import flash.external.*

    public class MySprite extends Sprite {
    function MySprite():void 
    {
        ExternalInterface.addCallback("handleEventInAS", handleEventInAS);
    }

    function handleEventInAS(e:Object) 
    { 
       trace("in handleEventInAS with e=" e);
    }
}
  

Затем в HTML / JS,

  <script src="swfobject.js"></script>
 <script>

     swfobject.embedSWF("myflash.swf","myflashid","100","100",9);
     var flashobj = swfobject.getObjectById("myflashid");
     window.onmousemove = connectjs2as;

     function connectjs2as(e)
     {
        if(flashobj)
            flashobj.handleEventInAS(e);
     }
 </script>
  

Примечание: Требуется FlashPlayer 9, поэтому я добавил ‘9’ в вызов embedSWF().

Комментарии:

1. Спасибо, хотя я хотел знать, возможно ли это без исходного кода flash 🙂

2. Для этого вам понадобятся 2 вещи. 1) swf-файл обслуживается с одного хоста из-за проблем с междоменной политикой, 2) swf-файл должен иметь выполненные вызовы ExternalInterface.addCallback, и вам нужно будет знать, что swf-файл использовал для обозначения обратного вызова (первый аргумент addCallback). Что касается второй части, возможно, можно декомпилировать swf, чтобы получить информацию о том, какие обратные вызовы были добавлены ExternalInterface , хотя я не пробовал этого раньше, поэтому не уверен.