`

as常识

    博客分类:
  • Flex
阅读更多
网址: http://www.nshen.net/blog/article.asp?id=467

*找到常见<mx: ...>前缀标签对应的类

安装目录\Adobe\Flex Builder 2\Flex SDK 2\frameworks\mxml-manifest.xml.

*代码ctrl+s以后,想返回以前保存的版本

在你代码上点右键--->Replace with ---> LocalHistory

会显示该文件最近50个保存版本

*清楚显示组件是不是放在正确的container里

在设计模式点这个刷新右边的按钮,图:


*显示图片

loading方式加载图片
<mx:Image source="assets/dairy_milk.jpg" scaleContent="true"/>

把图片compile进swf
<mx:Image source="@Embed('assets/dairy_milk.jpg')" scaleContent="true"/>

用本地xml做model

<mx:Model> 标签 可以把xml文件complie进swf,从而很方便的进行类绑定

<mx:Model id="groceryInventory" source="assets/inventory.xml"/>

inventory.xml文件内容
<groceries>
<catID>1</catID>
<prodName>Milk</prodName>
<unitID>2</unitID>
<cost>1.20</cost>
<listPrice>1.99</listPrice>
<description>Direct from California where cows are happiest</description>
<isOrganic>true</isOrganic>
<isLowFat>true</isLowFat>
<imageName>dairy_milk.jpg</imageName>
</groceries>

然后在main文件里

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" creationComplete="prodHandler(groceryInventory)">
<mx:Script>
<![CDATA[
private function prodHandler(theItems:Object):void
{
//这里可以看到结果了
trace (theItems.prodName);
trace (theItems.cost);
}

]]>
</mx:Script>

* Bindable

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

在包定义后,类定义前,加入[Bindable],表示该类所有属性都可以绑定

package valueObjects {
[Bindable]
public class Product {
public var catID:Number;
}
}

*如果绑定一个Object 只有在Object的引用改变的时候才会引发更新
Obejct内部属性改变不会引发更新

*绑定setter 必须有getter ...要成对儿绑定

[Bindable]
public function set shortNames(val:Boolean):void {
...
}

public function get shortNames():Boolean {
...
}


因为当你给shotNames 设置值的时候, flex 会自动调用对应getter 方法来检测 这个值是否改变了

默认情况下如果值改变了,会广播一个PropertyChangeEvent类型的propertyChange 事件.

你也可以自己负责广播这个事件,这样flex就不自动判断值是否改变了

[Bindable(event="changeShortNames")]
public function set shortNames(val:Boolean):void {
...
// Create and dispatch event.
dispatchEvent(new Event("changeShortNames"));
}

// Get method.
public function get shortNames():Boolean {
...
}
// Define private variable.
private var _maxFontSize:Number = 15;

[Bindable(event="maxFontSizeChanged")]
// Define public getter method.
public function get maxFontSize():Number {
return _maxFontSize;
}

// Define public setter method.
public function set maxFontSize(value:Number):void {
if (value <= 30) {
_maxFontSize = value;
} else _maxFontSize = 30;

// Create event object.
var eventObj:Event = new Event("maxFontSizeChanged");
dispatchEvent(eventObj);

}

value Object模式

flex中常见的设计模式,建议可以去看看riawave

package valueObjects {
[Bindable]
public class Product {
public var catID:Number;
public var prodName:String;
public var unitID:Number;
public var cost:Number;
public var listPrice:Number;
public var description:String;
public var isOrganic:Boolean;
public var isLowFat:Boolean;
public var imageName:String;
//可以定义个静态方法用于创建
public static function buildProduct(o:Object):Product{
var p:Product = new Product(o.catID, o.prodName, o.unitID, o.cost, o.listPrice, o
.description, Boolean(o.isOrganic), Boolean(o.isLowFat), o.imageName);
return p;
}

}
}

Event Object

<mx:Application xmlns:mx="http://www.adobe.com/2005/mxml" xmlns="*"
layout="absolute">
<mx:Script>
<![CDATA[

private function myFunction(event:Event):void{
//注意这里
trace (event.currentTarget);
trace (event.type);
}

]]>
</mx:Script>
<mx:Button id="myButton" click="myFunction(event)"/>
</mx:Application>

不同域间交流必须有 crossdomain文件

<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>

http://www.cnn.com/crossdomain.xml
http://www.flexgrocer.com/crossdomain.xml

HttpService
引用
my_httpservice.lastResult.xxx

event.result.xxx
相同
[Bindable]
private var units:ArrayCollection=new ArrayCollection();

<mx:HTTPService id="unitRPC"
url="http://www.flexgrocer.com/units.xml"
result="unitRPCResult(event)"/>

private function unitRPCResult(event:ResultEvent):void{
units=event.result.allUnits.unit;
}

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="unitRPC.send()">

<mx:List id="unitID"
rowCount="4"
dataProvider="{units}"
labelField="unitName"/>

arraycollection里加一个元素

private function catHandler(event:ResultEvent):void{
categories = event.result.catalog.category;
var catObj:Object = new Object();
catObj.name = "All";
catObj.categoryID = 0;
categories.addItemAt(catObj, 0);
catCombo.selectedIndex = 0;
}

实现IEventDispatcher接口,广播事件

用于,当类本身继承其他的类,不能直接继承EventDispatcher时,可以以实现IEventDispatcher接口的方法实现广播

需要实现5个方法

public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, weakRef: Boolean = false):void {
_eventDispatcher.addEventListener(type, listener,useCapture, priority, weakRef);
}

public function dispatchEvent(event:Event):Boolean {
return _eventDispatcher.dispatchEvent(event);
}

public function hasEventListener(type:String):Boolean {
return _eventDispatcher.hasEventListener(type);
}

public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void {
_eventDispatcher.removeEventListener(type, listener,useCapture);
}

public function willTrigger(type:String):Boolean {
return _eventDispatcher.willTrigger(type);
}
}

继承flash.utils.Proxy类,可以捕获undefined
一定要先导入flash_proxy命名空间

import flash.utils.flash_proxy;

然后覆盖flash_proxy命名空间下的 getProperty方法,可以实现对该类不存在属性访问的捕获

/*捕获到该类不存在的属性,并把这次访问修改成访问xml对应的值*/

xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<cs:settings xmlns:cs="http://www.dannypatterson.com/2006/ConfigSettings">
<cs:property id="testOne" value="This is the first test value." />
<cs:property id="testTwo" value="This is the second test value." />
</cs:settings>

flash_proxy override function getProperty(name:*):* {

//找到xml的cs命名空间
var cs:Namespace = _data.namespace("cs");
//将属性值强制为String型
var qname:String = String(name);
return _data.cs::property.(@id == qname).@value;
}

* .客户端与服务器端 valueobject mapping

To allow Flex to map between client-side and server-side value objects,

you must provide some hints to the Flex server about the relationship

between the classes. In Cairngorm, you achieve this by advocating that

each and every instance of a value object class contains the following:

public static var registered:Boolean = Object.registerClass(

"org.nevis.cairngorm.samples.store.vo.ProductVO", ProductVO );

This line ensures that a ProductVO class on the client maps to the Java

class ProductVO.java that resides in the package

org.nevis.cairngorm.samples.store.vo.ProductVO on the server.

* . [Event("xxx")]标签

自定义的组建如果有广播事件,那么请给这个组件广播的事件加到[Event("xxx")]里,这样就是告诉Flex compiler你可以在mxml里使用了这个事件了,例如:
如果你的自定义组件中有
dispatchEvent( new Event(Event.CHANGE) );
那么你应该在你的组里加上这个

<mx:Metadata>
  [Event(name="change",type="flash.events.Event")]
</mx:Metadata>
这样你就可以在mxml里这样用了
<你的组件 change="handleCycleChange(event)" />

addChildAt()

addChildAt() specifies the position at which to add the object. If you specify a position that is already occupied, the object at that position, and those at higher positions, move up by 1.

所以以前的遍历mc
for each (var i in mc) {
  trace(mc[i]);
}

上边那个枚举mc中所有mc~~~
现在要这么写了

for i=0 i<numChildren i++
getChildAt( i)

ViewStack 的每个子页面第一次显示的时候才会触发creationComplete,而且只会触发一次

* 让Flex 编译出指定大小和帧频的swf

右击项目,选择 Properties 菜单项,在弹出的 Properties for ConjeeAlbum 面板左侧菜单选择 ActionScript Compiler ,在右面的 Additional compiler arguments: 里输入如下命令:
-default-size 800 600 -default-background-color 0xFFFFFF -default-frame-rate 25

也可以在类代码所有 import 语句之后、class 定义之前输入:
[SWF(width="800", height="600", frameRate="25", backgroundColor="#FFFFFF")]

* 调用removeChild之前先检查是否存在
当你试图在displayObject上调用removeChild 删除的child不存在时会出现这样的错误
TypeError: Error #1009: Cannot access a property or method of a null object reference.
为了避免这种情况,判断一下是否存在是必要地

if(MC) if(MC.parent ) MC.parent.removeChild(MC);
分享到:
评论

相关推荐

    AS3常识(上)

    ActionScript 3.0 是一种强大的面向对象编程语言,它标志着 Flash Player Runtime 演化过程中的一个重要阶段。设计 ActionScript 3.0 的意图是创建一种适合快速地构建效果丰富的互联网应用程序的语言,这种应用程序...

    AS3常识(下)

    ActionScript 3.0 是一种强大的面向对象编程语言,它标志着 Flash Player Runtime 演化过程中的一个重要阶段。设计 ActionScript 3.0 的意图是创建一种适合快速地构建效果丰富的互联网应用程序的语言,这种应用程序...

    关系代词as用法说明.doc

    而在非限制性定语从句中,which通常位于主句之后,as则可以在句中任何位置,但通常更偏向于表达预期或常识性的事实。比如,“Li Ming was late, which (=and this) made Mr. Zhang very angry.” 这个例子中,which...

    电机起动器 M200D 的 AS-Interface[手册].pdf

    这是电力设备安全操作的基本常识。 5. 产品标识和认证的重要性:手册多次提及产品系列号(如3RK1315、3RK1325s),这些标识信息对于识别产品、查找相关信息和配件至关重要。同时,这也说明了产品遵循了相应的认证...

    最全英语句式高分高能综合总结(精华版)1~50.doc

    8. **As is known to us all, …** 此句型常用于引出常识或广为人知的事实,意为“众所周知,……”。 - As is known to us all, water is the source of life. (众所周知,水是生命之源。) 9. **As long as…**...

    流媒体常识工具格式转换播放软件使用介绍.pdf

    【流媒体常识】 流媒体是一种在网络上连续传输的媒体形式,允许用户在数据完全下载之前就开始播放。这种技术广泛应用于在线视频、音频直播和点播服务。流媒体工具和播放软件的使用是确保顺利观看和处理这类媒体的...

    gcc编译器常识介绍

    接着,GCC会调用ccl和as将处理后的源代码编译成目标代码;最后,GCC会调用链接程序ld,把生成的目标代码链接成一个可执行程序。 为了更好地理解GCC的工作过程,可以把上述编译过程分成几个步骤单独进行,并观察每...

    塑料原料相关常识.pptx

    其他如AS树脂、ABS树脂、PMMA和尼龙6/66的成型和干燥条件也有特定的要求。 综上所述,塑料原料的常识涵盖了高分子科学、塑料的分类、性能、制备工艺以及加工条件等多个方面,这些都是理解和应用塑料材料不可或缺的...

    Delphi 语言常识.pdf

    ### Delphi语言常识 #### 单元文件结构 在Delphi编程中,单元(Unit)是组织代码的基本单位。每个单元文件通常包含了该单元的声明和实现两大部分,其基本结构如下: ```pascal unit UnitName; interface uses ...

    ORACLE常识.txt

    `AS IS` 关键字用于声明过程或函数体,它告诉编译器不要对过程或函数体进行优化,而应保留其原样。例如: ```sql CREATE OR REPLACE PROCEDURE haojf.BLLX IS c CHAR(3); e CHAR(3); x VARCHAR(30); BEGIN -- .....

    矿山救护仪器装备常识.pdf

    《矿山救护仪器装备常识》是一份关于矿山救援设备和工具的专业资料,主要涵盖了个人防护类、通讯类、检测仪表类、灭火装备和装备工具类等多个方面,旨在教育和培训矿山救援人员正确使用这些设备,保障他们在执行救援...

    学校多媒体使用说明、简易故障排除和电脑基本常识.pdf

    4. **视频插入**:PPT支持的视频格式包括WMV、ASF、MPEG、MP4,插入SWF或FLV需安装相应插件。 5. **格式转换**:安装转换器如格式工厂、狸窝全能视频转换器等,以便转换视频格式。 6. **视频编辑**:推荐使用...

    oracle 数据库小常识

    ### Oracle数据库小常识知识点解析 #### 一、查询对象依赖关系 **知识点**: 在Oracle数据库中,有时我们需要了解一个特定对象(如表、视图等)与其他对象之间的依赖关系。这种依赖可以是直接的(例如,一个表通过...

    关于莎士比亚作品常识的单选汇总及答案.doc

    【关于莎士比亚作品常识的单选汇总及答案】 莎士比亚是英国文学史上的巨匠,他的作品在世界范围内产生了深远影响。以下是对部分题目涉及的莎士比亚作品及其相关知识点的详细解读: 1. 单选1:莎士比亚最重要的喜剧...

    网络管理员必须掌握的路由器常识

    ### 网络管理员必须掌握的路由器常识 在IT领域中,网络管理员是连接不同设备、维护网络稳定性和效率的关键角色。为了确保网络环境能够高效、安全地运行,网络管理员必须掌握一系列关于路由器的基础知识与高级技能。...

    MyEclipse使用常识及解决方案

    ### MyEclipse使用常识及解决方案 #### 一、MyEclipse配置JDK的步骤 在使用MyEclipse进行Java开发之前,首先需要正确地配置JDK环境。这一步骤至关重要,因为MyEclipse依赖于JDK来编译和运行Java程序。 **配置步骤...

    英语作文常用连接词与作文万能模板.doc

    - as has been mentioned, it is quite clear that, there is no doubt that, it is well-known that: 引用前面已述的内容或常识。 - as/so far as I know: 表达个人了解的范围。 - to sum up, in summary: 最后...

    电路常识性概念(3)-TTL与CMOS集成电路

    ### 电路常识性概念(3)-TTL与CMOS集成电路 #### 1. TTL电路 - **定义**: TTL电路是以双极型晶体管为开关元件的集成电路,因此也被称为双极型集成电路。这类集成电路利用电子和空穴这两种不同极性的载流子进行电...

    GCC编译器常识[定义].pdf

    3. **汇编(Assembling)**:汇编器as将汇编代码转化为机器语言的目标代码。 4. **链接(Linking)**:链接器ld将所有目标代码与库函数结合,生成可执行文件。 在实际操作中,开发者可以通过指定参数如-E、-c、-o等,...

    高三英语一轮复习完美衔接过 编织流畅作文PPT课件.pptx

    “As we all know”,则用来引入一个常识性的陈述,使论述显得更有依据。 在翻译实践中,例如: 1. “首先,我认为一个人在国外多交朋友是很重要的。”可以表达为:“First of all, I think it important to make ...

Global site tag (gtag.js) - Google Analytics