FlashVars не лучше и не хуже. Это просто другое. Это позволяет вам передавать некоторые данные в ваш 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, ну ... она не будет вызываться. То же самое верно и в обратном направлении, хотя на практике это происходит гораздо реже.