来自一个部件的柔性访问变量到另一个

我有宣布一个int变量主要应用。 我想要访问该变量在另一种组分,其存在于另一个包。 我怎样才能做到这一点?

Main.mxml(默认包)

<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" preinitialize = "foo()"> <fx:Script> <![CDATA[ public var value1:int; public function foo():void { value1 = 5; } ]]> </fx:Script> <\s:Application>

Comp.mxml(组件封装)

<?xml version="1.0" encoding="utf-8"?> <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationcomplete = "foo2()"> <fx:Script> <![CDATA[ public function foo2(): void{ //------> access value1 from Main.mxml here. } ]]> </fx:Script> </s:Group>

--------------解决方案-------------

因为你需要的变量在主应用程序类,您可以使用parentApplication属性来访问它。

Main(this.parentApplication).value;
//or
Main(Application.application).value;

在一般情况下,这样做的正确的方法是通过在源对象的引用(在此情况下,应用程序),以呼叫者对象 - 或者通过一些公共属性传递值本身。 假设Comp的问题是出现在主应用程序本身,你可以这样做:

<!-- Main.mxml : make value1 [Bindable] if you need the updates to be
reflected automatically -->

<custom:Comp val="{this.value1}"/>

<!-- Comp.mxml : declare val as a public variable/property -->
<fx:Script>
<![CDATA[
public var val:int;
]]>
</fx:Script>

你需要有某种形式的重定向,就像告诉组件在哪里看,即:

<fx:Script>
<![CDATA[
[Bindable] public var myapp:Application = null;
public function get value1():int
{
return ( myapp == null ? 0 : myapp.value1 );
}
public function foo2():void
{
var i:int = this.value1;
}
]]>
</fx:Script>

而在应用程序:

<package:Comp myapp="this" />

否则,你可以建立某种形式的单 - 一类范围的静态变量。 但是,这是相当混乱。

你的主要的应用程序应该有一个参考什么需要的int值的组件。 并且该值应该从您主要的应用程序设置。 如果该值需要响应于被设置成在组件中的情况下,该组件可以触发和调度事件,和主要的应用程序可具有一个事件监听器,然后通过所需中间体

你也可以绑定值主应用程序动作:BindingUtils.bindProperty(这一点,“我”,this.component,“我”),但以前的方法是一个更好的做法。

如何自定义事件。

http://livedocs.adobe.com/flex/3/html/help.html?content=createevents_3.html

当您创建自定义事件,您可以在整个应用程序访问的变量。

否则去

mx.core.Application.application访问的主要应用

分类:柔性 时间:2015-03-15 人气:2
本文关键词: 弯曲,动作
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.010 (s). 10 q(s)