2010-07-11 3 views
2

Я использую ExternalInterface до сих пор в редких случаях, когда мне нужно было общаться с HTML.FlashVars или ExternalInterface

  • Является ли FlashVars лучшей/худшей или более новой/старой практикой?
  • или когда вы используете один или другой? Какова логика, которой я должен следовать, чтобы помочь мне решить, какой из них использовать?

ответ

7

FlashVars не лучше или хуже. Это совсем другое. Он позволяет передавать некоторые данные в ваш swf во время загрузки. Если вам нужно только передать SWF в какой-то контекст, FlashVars - это то, что вы хотите.

Теперь, если вам требуется больше взаимодействия между вашим swf и его хостом (в большинстве случаев это веб-браузер, который может запускать Javascript), ExternalInterface поможет.

Если вы хотите передать данные из swf на хост, используйте ExternalInterface.call со стороны AS и установите соответствующую функцию JS на свой html. Если связь идет наоборот, используйте ExternalInterface.addCallback со стороны AS и создайте функцию JS, которая вызывает этот обратный вызов на вашем html. Конечно, вы можете использовать как call, так и addCallback, если вам это нужно. В большинстве случаев я использую ExternalInterface.call, так как я использую этот механизм в основном для вызова аналитики Google или какой-либо другой системы отслеживания.

Важным аспектом ExternalInterface является то, что для его успеха должны быть загружены как ваш swf, так и JS-код, который обрабатывает сообщение. Это очевидно, если вы подумали об этом на секунду, но могли бы привести к проблемам, если вы не учтете это. То есть, если из JS вы вызываете функцию, которая еще не добавлена ​​в качестве обратного вызова в вашем swf, ну ... она не будет вызвана. То же самое верно и наоборот, хотя на практике это реже.

+0

+1 что ответ научил меня чему-то, спасибо. Хороший вопрос тоже. Я использую blazeDS в основном, и мне еще не нужно было научиться подключаться к JavaScript. Теперь я достаточно усвоил, чтобы заставить его работать. – gMale