海正試圖從父(閃存)加載變量到子(閃存)。它工作正常。無法從閃存(父級)發送變量到加載的Flex SWF(子)?
父SWF:(閃存)
var parentMessage:String = "Hello";
var swf:MovieClip;
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
l.load(new URLRequest("child.swf"));
function swfLoaded(e:Event):void
{
swf = MovieClip(e.target.content);
swf.passVariable(parentMessage);
}
孩子SWF(柔性)
public var childMessage:String;
function passVariable(_msg:String):void
{
childMessage = _msg;
trace("message passed from parent to child: " + childMessage);
}
不過,雖然有閃光燈溝通,展示其未加載。
錯誤消息
ReferenceError: Error #1069: Property passVariable not found on _child_mx_managers_SystemManager and there is no default value. at Function/()
請幫助我。
更新
閃光燈parent.swf
var parentMessage:String = "Hello";
var swf:MovieClip;
var l:Loader = new Loader();
l.load(new URLRequest("asd.swf"));
swf.addEventListener("applicationComplete", swfLoaded);
function swfLoaded(e:Event):void
{
var app:DisplayObject = swf.getChildAt(1);
app["passVariable"](parentMessage);
}
Child.swf在柔性
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" addedToStage="application1_addedHandler(event)" >
<fx:Script>
<![CDATA[
public var childMessage:String;
protected function application1_addedHandler(event:Event):void
{
passVariable(childMessage);
}
public function passVariable(_msg:String):void
{
childMessage = _msg;
trace("First message passed from parent to child: " + childMessage);
}
]]>
</fx:Script>
的ErrorMessage
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Untitled_fla::MainTimeline/frame1()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at mx.managers::FocusManager/activate()
at spark.components::Application/initManagers()
at spark.components::Application/initialize()
at asd/initialize()
at mx.managers.systemClasses::ChildManager/childAdded()
at mx.managers.systemClasses::ChildManager/initializeTopLevelWindow()
at mx.managers::SystemManager/initializeTopLevelWindow()
at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::kickOff()
at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::preloader_completeHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.preloaders::Preloader/timerHandler()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()
謝謝我得到這樣的錯誤,1061:調用一個可能未定義的方法passVariable通過引用與靜態類型flash.display:DisplayObject。 – Ela 2012-03-27 12:32:17
@ user1268367我已經更新了答案。您可以使用動態屬性。 – 2012-03-27 13:18:06
再次出現錯誤,ReferenceError:錯誤#1069:在_ViewPPT_mx_managers_SystemManager上找不到屬性passVariable,並且沒有默認值。 \t在功能/() –
Ela
2012-03-27 13:29:57