标签: flex4

Flex性能考虑因素

Flex开发人员应该记住哪些主要关键点是为了提高Flex应用程序的性能?我想到的是:

  1. 从更轻量级的基类扩展ItemRenderers:即UIComponent
  2. 对动画使用suspendBackgroundProcessing设置为true
  3. 在适当的地方使用ArrayLists而不是ArrayCollections.
  4. Spark DataGroups中的useVirtualLayout(遗憾的是,此步骤需要Scrollers使此建议生效)
  5. AIR应用程序的SQLight性能优化(事务等)
  6. 可能将长数据处理分成不同的帧?(虽然没有这样做,所以我可能会弄错)

在开发Flex3/Flex4/AIR应用程序时,您尝试遵循哪些关键指导原则以提高其性能?

apache-flex air performance flex3 flex4

13
推荐指数
3
解决办法
1546
查看次数

Flex的FileReference.save()只能在用户事件处理程序中调用 - 我该如何解决这个问题?

我需要在Web服务调用完成后调用FileReference.save(),但此方法有一个限制:"在Flash Player中,您只能成功调用此方法以响应用户事件(例如,在事件处理程序中)用于鼠标单击或按键事件.)否则,调用此方法会导致Flash Player抛出错误异常." (来自此处的文档)

这种限制有点模糊.这是否意味着我只能从事件处理函数中调用FileReference.save()方法,该函数被注册为某些类型的用户事件的侦听器?如果是,那么究竟哪些用户事件有效?(也许有一个事件永远不会被用户与我的应用程序交互调度,我可以为该事件类型注册一个事件处理函数,并从该函数中调用save()?)

我的困难是我无法安全地调用FileReference.save()方法,直到我的Web服务返回将用作FileReference.save()方法调用的参数的数据,因此触发FileReference的事件. save()调用实际上是一个ResultEvent,而不是一个用户事件,我很谨慎地调度一个新的(虚假)用户事件类型,以便能够触发FileReference.save()调用,除非它肯定是一个用户事件,永远不会因实际用户与我的应用程序交互而被调度.

简而言之,我现在正在做的是:我有一个注册为按钮点击的处理程序的函数.在此函数中,我进行Web服务调用以从服务器获取数据.我还有一个结果处理函数,它在Web服务调用完成时被调用,而在这里我想调用FileReference.save()方法,因为此时我知道数据已准备好保存到一份文件.但上述限制阻止我这样做 - 我收到一个错误:

Error #2176: Certain actions, such as those that display a pop-up window, 
may only be invoked upon user interaction, for example by a mouse click 
or button press.
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多东西来解决这个问题,比如创建一个带有FileReference.save()调用的第二个鼠标单击事件处理函数,并在超时间隔后调用它(以便让Web服务时间完成),但我保留了遇到同样的错误 - 也许这种方法不起作用,因为第二个函数没有注册为用作其参数的事件类型的事件监听器.

我是Flex开发的新手,所以也许我只是没有以正确的方式思考这个问题.如果有人可以提出另一种方法,我会非常感激.提前感谢您的意见或建议.

- 詹姆士

apache-flex actionscript actionscript-3 filereference flex4

12
推荐指数
1
解决办法
1万
查看次数

Flex框架的替代方案

是否存在类似于Flex的替代ActionScript 3轻量级框架,但不是那么庞大.Flex是相当大的,SWF的重量不低于150Kb,我只是认为必须能够获得具有较小SWF文件的东西作为最终结果.

我来到AS Wing,很奇怪是否有更多.

感谢您提前回复!

apache-flex adobe actionscript flex4

11
推荐指数
4
解决办法
3146
查看次数

Flex 4 Scroller

在我的应用程序中,我使用的是Scroller组件.我似乎无法弄清楚应该设置一个监听器的事件,以便知道何时滚动内容.我尝试Event.CHANGEScroller.verticalScrollBar属性,但显然当用户使用鼠标滚轮或箭头键滚动时,事件不会触发.

apache-flex scroll actionscript-3 flex4

11
推荐指数
1
解决办法
5241
查看次数

数据绑定将无法检测"topLevelApplication"的分配

我正在将应用程序从Flex 3迁移到Flex 4.在某些情况下,有一些弹出窗口的宽度和高度绑定到应用程序的宽度和高度.

width="{Application.application.width - 24}" 
height="{Application.application.height - 32}"
Run Code Online (Sandbox Code Playgroud)

Application.application在4.0中已弃用.所以我用它取而代之

width="{FlexGlobals.topLevelApplication.width - 24}" 
height="{FlexGlobals.topLevelApplication.height - 32}"
Run Code Online (Sandbox Code Playgroud)

现在,编译器发出警告,无法检测到topLevelApplication的数据绑定.

数据绑定将无法检测"topLevelApplication"的分配

我的问题是:是否有其他(可绑定)属性,我可以使用它来获得与以前相同的功能?

apache-flex actionscript-3 flex4

11
推荐指数
1
解决办法
1万
查看次数

在一个文件中Flex 4两个类

我可以将两个或更多actionscript类放在一个.as文件中,如下所示:

//A.as
package classes {

    public class A {
        public function A() {
            var b:B = new B();
        }
    }
    internal class B {
        public function B() {
            trace("Hello");
        }
    }
}

它在Flash Builder中不起作用:

在源路径中找到的文件不能具有多个外部可见定义.类:A; 类:乙

如果可能的话,我会问下一个问题.
我可以在一个.as文件中放置两个或多个包含多个类的包吗?

oop packages class actionscript-3 flex4

11
推荐指数
1
解决办法
6262
查看次数

TabNavigator无法处理Flex 4.5中的已禁用子项

我将TabNavigator从Flex 3迁移到Flex 4.5时遇到了问题.剥离到最低限度,以下代码将产生错误,即TabNavigator的第二个子项无法正确创建:

<?xml version="1.0" encoding="utf-8"?>
<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"
    >
    <fx:Script>
        <![CDATA[
            protected function over():void
            {
                trace('over');
            }

            protected function content_one_init():void
            {
                content_one.enabled = true;
                navigator.selectedIndex = 1;
            }

        ]]>
    </fx:Script>
    <mx:TabNavigator
        id="navigator"
        creationPolicy="auto"
        width="100%" height="100%"
        >
        <mx:VBox
            id="content_one"
            enabled="false"
            creationComplete="content_one_init()"
            label="One"
            mouseOver="over()"
            />
        <mx:VBox label="Two">
            <mx:Label text="Content Two" />
        </mx:VBox>
    </mx:TabNavigator>
</s:Application>
Run Code Online (Sandbox Code Playgroud)

我在启动时看到的是一个TabNavigator,它选择了第二个标签但没有内容而不是预期的"内容二"标签.该navigator.selectedIndex = 1;指令只是为了舒适,如果您在启动后用鼠标选择第二个选项卡,则也会出现错误.

现在来了有趣的部分:如果我执行以下任何操作,则会创建第二个子项:

  • creationPolicy="all"在content_one上设置(这是预期的),
  • 评论content_one.enabled = true,
  • 删除enabled="false"content_one,
  • mouseOver="over()"从content_one中删除(这个真的很奇怪,因为从不调用处理程序)

这真的是一个Flex bug,还是有什么我想念的?我使用的是Flex 4.5.0.20967,所有这些都在Flex 3.5中运行良好.

谢谢.

apache-flex flex4 tabnavigator

10
推荐指数
1
解决办法
937
查看次数

需要Flex澄清:width,min(max)Width,explicitWidth,explicitMin(Max)Width,measuredWidth,measuredMinWidth,percentWidth

有人能够以一种易于理解的方式简要解释不同Flex尺寸属性的含义吗?

到目前为止我所拥有的:

真实大小

widthheight.这是组件的实际(和最终)大小.如果未明确设置,则将通过应用所有布局规则和百分比大小来计算大小.

明确的大小

explicitWidthexplicitHeight.我们需要两个属性来决定是否需要计算实际大小,或者只是从这些属性中复制.

测量尺寸

measuredWidth,measuredHeight,measuredMinWidthmeasuredMinHeight.组件的默认大小.该组件应该在其measure()钩子中设置这些大小.仅当未设置显式大小(例如widthexplicitHeight)时,默认大小才适用.仅在百分比大小的情况下考虑最小/最大测量尺寸.计算的(实际)尺寸不能小于测量的最小尺寸.

百分比大小

percentWidthpercentHeight.明显.

最小尺寸

minWidth,minHeight.返回组件的最小大小 - 显式设置或者设置默认的最小大小measure().允许设置显式最小值,以覆盖默认(测量)最小值.

明确的最小尺寸

explicitMinWidth,explicitMinHeight.与显式大小相同的角色.如果设置,则使用这些值,否则使用默认(测量的)最小值.

最大尺寸

maxWidth,maxHeight.返回组件的最大大小 - 显式设置或默认最大大小10000.

显式最大尺寸

explicitMaxWidth,explicitMaxHeight.与显式大小或显式最小大小相同的角色.如果设置,这些值将用于确定上部大小边框,否则用于默认最大大小10000.

希望,还有更多尺寸属性需要讨论.

apache-flex flex3 actionscript-3 flex4 flex4.5

10
推荐指数
1
解决办法
2495
查看次数

如何在Flex中控制Spark Datagrid的滚动条位置?

我正在为一个项目使用新的Spark Datagrid,但我必须承认滚动条让我烦恼一点,所以我想对它有一些控制权.

换句话说,我想以编程方式将Datagrid滚动条位置设置为我想要的位置.

先感谢您.

apache-flex datagrid scrollbar actionscript-3 flex4

10
推荐指数
2
解决办法
5203
查看次数

可以将参数传递给皮肤吗?

我有2个皮肤,几乎相同,但在1个小方法上有所不同,如果我可以将布尔值传递给皮肤,同时将其分配给主机组件(按钮).

<s:Button skinClass="MyBtnSkin" />
Run Code Online (Sandbox Code Playgroud)

在为按钮分配皮肤时是否有办法,我还可以以某种方式将参数传递给皮肤?

apache-flex adobe actionscript actionscript-3 flex4

9
推荐指数
1
解决办法
3722
查看次数