2011-01-27 74 views
2

问候,首次海报。
假设我的页面上有一个flash(swf)对象,并且我有一个与该flash对象一起工作的特定JavaScript类(可以称之为“JSClass”)。 JavaScript类有一些与flash对象进行通信的方法。 当flash对象通过swfObject嵌入到页面中时,我创建了JSClass的一个实例,并为其提供了页面上的Flash对象的ID,以便该实例可以专门与该Flash对象进行通信。 我在页面上有多个相同的Flash文件,我需要将调用区分为特定的Flash对象。
事情是这样的:从闪存中定位特定的JavaScript对象实例

 

var flashControl1 = new JSClass('flash_id_1'); 
var flashControl2 = new JSClass('flash_id_2'); 

// so later I can start the first flash object 
flashControl1.startAnimation(); 

// and stop animation on the second flash object 
flashControl2.stopAnimation(); 

这一切工作正常。 我遇到的问题是,Flash对象需要在内部执行某些操作,然后才能通过JavaScript进行操作(它们需要加载某些内容等)。

Flash对象需要通知实例引用它们的JSClass,他们已准备好被操纵。 这样的事情。

 
flashControl1.onFlashReady = function() 
{ 
// do some stuff here when the flash is ready. 
} 

如何从Flash中调用“flashControl1.onFlashReady()”? 请注意,Flash不知道要定位哪个JSCLass实例。 如何从Flash对象中定位特定的JSClass实例。

回答

1

我建议你通过flashvars将flash_id传递给你的Flash电影,当Flash电影的初始化完成后,你使用ExternalInterface.call("someJsMethod", flashId);来通知你的javascript。在您的javascript方法someJsMethod(flashId)中,您可以检查该id并将其映射到您的JSClass。

+0

我认为这是可接受的解决方案。谢谢 – 2011-01-28 13:59:20