Bug!Flex帧频自动1000!
用Flex4加载Flex3的组件时,发现了这个问题:
当用spark添加一个mx组件时不会有问题,但当这个mx组件中还有其他组件
例如<mx:HBox><mx:Canvas/></mx:HBox>被添加到<s:Group></s:Group>
(注:通过AS代码使用addElement()添加,而不是直接写到mxml中)
stage.frameRate会瞬间达到1000!
之后会自动恢复到默认的帧频(如果不手动设定,会是24)
这时不用担心什么问题,
但如果frameRate达到1000的这段时间中,添加了一个EnterFrame事件,
并且在EnterFrame的响应函数中,调整某个组件的位置,
frameRate就不会恢复回24,而是一直持续1000,直到取消了EnterFrame为止
但即使没有使用EnterFrame函数,这个时间也会持续0.3秒左右,
如果这期间有图像变化,会明显感觉到卡了一下,
因此尽量避免写代码时Flex3,4混用,能用Flex4的组件尽量用Flex4的组件
源码如下:
Application.mxml:
<?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" minWidth="955" minHeight="600" frameRate="12"
backgroundColor="0xFF00FF">
<fx:Script>
<!--[CDATA[
import components.MyComponent;
import mx.containers.HBox;
import mx.core.UIComponent;
import mx.events.FlexEvent;
protected function button2_clickHandler(event:MouseEvent):void
{
trace(this.stage.frameRate);
this.txt.text = "Current FrameRate:"+this.stage.frameRate.toString();
}
protected var _box:UIComponent;
protected function button3_clickHandler(event:MouseEvent):void
{
_box = new MyComponent();
this.container2.removeAllElements();
this.container2.addElement(_box);
button2_clickHandler(null);
button4_clickHandler(null);
}
protected function enterFrameHandler(event:Event):void
{
if(_box){
container1.x+=0.2;
}
}
protected function button4_clickHandler(event:MouseEvent):void
{
// this.moveEffect.play([this.container2]);
this.addEventListener(Event.ENTER_FRAME,this.enterFrameHa
相关文档:
之前写了《 flex 事件之理解》和《 flex meta tag 之理解》,本想是为写本文 flex 数据绑定之理解做铺垫的,谁知网上已有 flex 数据绑定之理解很好的文章,如下:
http://www.cnblogs.com/nianshi/archive/2010/05/19/1739407.html , FLEX ......
最近在开发过程中发现一个问题:Boolean类型的值无法在flex和java间传递,经过一段研究发现,问题出现在Boolean类型的getter和setter方法上。
按照javabean的规范,小布尔类型的getter是以is做前缀的,但是大布尔类型的getter就成了以get为前缀了(大布尔作为引用类型,已经被视为普通 ......
之前一直没在意父容器和子容器各自的生成次序,知道在项目中遇到一种case:初始化界面时父容器初始化的内容由子容器先初始化再触发,但是父容器必须在初始化时就已经加上了对子容器的监控。这就造成一对矛盾,既想先生成子容器又想先生成父容器。
先自己写段代码测试一下生成顺序,父容器
<?xml version="1.0" ......
这两天看了公司老总演示的一个效果,热图分布情况,感觉很直观。国内地图上很少有这种表现方式的。
g了一下发现以下:发现flex下有 IBM ILOG Elixir 可以用,不过这要花钱。
https://www.adobe.com/cn/products/flex/ibmilogelixir/
还有一个Heat API,可以再googlemap上叠加热图。
http://www.heatmapapi.com/ , ......
Flex里面,DataGrid的column的width属性不接受百分比,只接受一个具体的像素值,所以,如果想按照比例来设置列宽需要费些周折。Google了一下,有两种方法可以做到: 第一种方法,不要设置width为百分比,而设置为一个小数,所有列的小数值的和必须为1。 <mx:DataGrid width="100%" height="100%" ......