#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 , хотя я не пробовал этого раньше, поэтому не уверен.