- 浏览: 238105 次
- 性别:
- 来自: 北京
最新评论
-
LoveJavaMM:
[color=red][/color]为什么我的自定义组建不出 ...
跟我StepByStep学FLEX教程------Demo6之自定义事件&自定义组件 -
wangsiaofish:
auditionlsl 写道在使用Flex4时:
代码:cre ...
跟我StepByStep学FLEX教程------Demo5之事件Event -
wangsiaofish:
成功,perfect.
跟我StepByStep学FLEX教程------Demo7之页面跳转 -
happyzjj:
感谢楼主的共享,很受用
跟我StepByStep学FLEX教程------结束语 -
娇雨zj:
请问:我用第二种绑定了数据,BindingUtils.bind ...
跟我StepByStep学FLEX教程------Demo4之进度条数据绑定
跟我StepByStep学FLEX教程------Demo6之自定义事件&自定义组件
说明:该文系作者原创,请勿商用或者用于论文发表,转载必须经作者同意并且注明出处。
从这一讲开始,FLEX教程也从初级部分到中级了,Demo的复杂度也相应增加。
简单的回顾一下初级部分,这一部分对Flex的概念以及开发工具进行了介绍,结合具体的DEMO对MXML和AS3的基础语法进行了讲解。这一部分内容希望读者对Flex有一个基础的认识,并且能够进行简单的应用开发。
OK,这一讲的Demo以自定义事件和自定义组件为主题。
同样的,先看运行效果:
代码结构如下:
源代码如下:
自定义事件类MyCustomEvent.as:
package com.obj
{
import flash.events.Event;
public class MyCustomEvent extends Event
{
public static const TESTMYEVENT:String="testMyEvent"; //使用常量定义事件的触发方式名称
public var userLog:UserLogin;
public function MyCustomEvent(userLogin:UserLogin, type:String)
{
super(type);
this.userLog=userLogin;
}
}
}
用户登录类UserLogin.as:
package com.obj
{
public class UserLogin
{
public var logUserNam:String=""; //用户名
public var logUserPass:String=""; //用户密码
public var logCompanyNam:String=""; //公司名称
public function UserLogin(userNam:String, userPass:String, companyNam:String)
{
this.logUserNam=userNam;
this.logUserPass=userPass;
this.logCompanyNam=companyNam;
}
}
}
自定义组件SysLoginWin.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="594" height="274" backgroundColor="#0327D9" backgroundAlpha="0.39" creationComplete="init()">
<mx:Script>
<![CDATA[
import com.obj.UserLogin;
import mx.controls.Alert;
import com.obj.MyCustomEvent;
private function init():void
{
VeriCodeLab.text = generVeriCode();
}
private function generVeriCode():String
{
var ranNum:Number;
var seedNum:Number;
var tmpCode:String;
var veriCode:String="";
for(var i:int=0; i<4; i++)
{
......
}
return veriCode;
}
internal function login(evt:MouseEvent):void {
var userLogin:UserLogin = new UserLogin(logTxt.text, passTxt.text, sysInfoArea.text);
var myTestEvent:MyCustomEvent = new MyCustomEvent(userLogin, MyCustomEvent.TESTMYEVENT);
this.dispatchEvent(myTestEvent); //自定义事件加到事件流
}
]]>
</mx:Script>
<mx:Metadata>
//声明事件注册通道的方法。name是事件对应的名称,也就是type。name一定要和事件类中的名称一致
[Event(name="testMyEvent", type="com.obj.MyCustomEvent")]
</mx:Metadata>
<mx:Label x="42.5" y="31" text="用户名:" fontSize="15" fontWeight="bold"/>
<mx:Label x="42.5" y="72" text="密 码:" fontSize="15" fontWeight="bold"/>
<mx:TextInput x="126.5" y="31" id="logTxt" fontSize="12"/>
<mx:TextInput x="126.5" y="73" displayAsPassword="true" id="passTxt" maxChars="8" width="160" fontSize="12"/>
<mx:Button x="42.5" y="153" label="登陆" fontSize="16" fontWeight="bold" fontStyle="italic" id="logBtn" click="login(event)"/>
<mx:Button x="220.5" y="153" label="帮助" fontSize="16" fontStyle="italic"/>
<mx:Panel x="322.5" y="31" width="222" height="150" layout="absolute" title="系统公告" fontSize="15" horizontalAlign="center">
<mx:TextArea x="0" y="0" width="202" height="104" text="五一劳动节放假3天 2009.5.1---2009.5.3" color="#030303" backgroundColor="#EF09C6" backgroundAlpha="0.27" id="sysInfoArea" maxChars="100" editable="false" wordWrap="true"/>
</mx:Panel>
<mx:Label x="102.25" y="219" text="XXX System XXX Company" width="399.5" fontSize="26" color="#0AE5F3" fontWeight="bold"/>
<mx:Label x="42.5" y="111" text="验证码:" fontSize="15" fontWeight="bold"/>
<mx:Label x="126" y="108" width="160.5" fontSize="19" fontFamily="Times New Roman" color="#FB07D6" id="VeriCodeLab" enabled="true" fontWeight="bold"/>
</mx:Canvas>
可以在Components的Custom看见自定义组件了:
主程序测试自定义事件TestMyEventMain.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%" xmlns:ns1="myComponents.*" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#E4F70C, #15A015]">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import com.obj.MyCustomEvent;
import mx.events.CloseEvent;
private function loginHandler(event:MyCustomEvent):void {
var useNam:String=event.userLog.logUserNam;
var usePass:String=event.userLog.logUserPass;
Alert.okLabel="确定";
if (useNam=="wangyisong"){ //注意,字符串比较相等用==,和Java区别
if (usePass=="12345678") {
Alert.show("用户'" + event.userLog.logUserNam + "'登录","登录信息",Alert.OK,this);
} else {
Alert.show("密码不正确!")
}
} else {
Alert.show("无效用户!")
}
}
]]>
</mx:Script>
<mx:Panel x="34" y="22" width="630" height="332" layout="absolute" id="mainMenu">
<!--testMyEvent就是SysLoginWin控件注册的事件-->
<ns1:SysLoginWin x="-0.5" y="-1" width="610.5" height="293" testMyEvent="loginHandler(event)" backgroundColor="#E1610B" backgroundAlpha="0.5">
</ns1:SysLoginWin>
</mx:Panel>
</mx:Application>
通过代码很容易明白,使用AS3方式的事件Event机制,可以将大部分功能抽象为自定义控件,达到代码的高度复用和系统的可扩展性。
下一讲对这个Demo进行一下简单讲解。
从这一讲开始,FLEX教程的内容和Demo比以前的复杂度会高一些------教程StepByStep,读者通过初级阶段的学习,这一阶段也就很容易了。
如果对DEMO或者讲述的不明白或有疑义的,请在评论中描述,作者尽量一一回复,由于工作关系,没有及时回复,提前请您见谅。
评论
为什么我的自定义组建不出来呢 for 里面的 .... 出错是什么原因呢
转载自http://hi.baidu.com/lq01/blog/item/be6bcc956a916252d0135e20.html
private function generVeriCode():String { //初始化 var ran:Number; var number:Number; var code:String; var checkCode:String=""; //生成四位随机数 for(var i:int=0; i < 4; i++){ //Math.random生成数为类似为0.1234 ran=Math.random(); number=Math.round(ran * 10000); //如果是2的倍数生成一个数字 if (number % 2 == 0){ //"0"的ASCII码是48 code=String.fromCharCode(48 + (number % 10)); }else{ //生成一个字母 //"A"的ASCII码为65 code=String.fromCharCode(65 + (number % 26)); } checkCode+=code; //绘制躁点 VeriCodeLab.graphics.clear(); var c:int=checkCode.length * 10; for(var j:int=0; j < c; j++){ var x:int=Math.random() * VeriCodeLab.width; var y:int=Math.random() * VeriCodeLab.height; VeriCodeLab.graphics.lineStyle(1, 0x7C929D); VeriCodeLab.graphics.drawRect(x, y, .5, .5); } } return checkCode; }
发表评论
-
跟我StepByStep学FLEX教程------读者答疑
2010-07-14 09:56 2428跟我StepByStep学FLEX教程------读者答疑 ... -
跟我StepByStep学FLEX教程------结束语
2009-09-15 11:56 2587跟我StepByStep学FLEX教程系列教程就暂 ... -
跟我StepByStep学FLEX教程------PDF版
2009-09-15 11:43 23132跟我StepByStep学FLEX教程------PDF版 ... -
跟我StepByStep学FLEX教程------贵在坚持
2009-09-15 10:53 2469跟我StepByStep学FLEX教程------贵在坚持 ... -
跟我StepByStep学FLEX教程------版权声明
2009-09-15 10:17 2380跟我StepByStep学FLEX教程------版权声明 ... -
跟我StepByStep学FLEX教程------Cairngorm之Command部分
2009-09-09 17:31 2455跟我StepByStep学FLEX教程------Cairng ... -
跟我StepByStep学FLEX教程------Cairngorm之核心控制流程
2009-09-09 16:40 2566跟我StepByStep学FLEX教程-- ... -
跟我StepByStep学FLEX教程------Cairngorm之Model Locator
2009-08-18 11:45 3191跟我StepByStep学FLEX教程-- ... -
跟我StepByStep学FLEX教程------Cairngorm之代码结构
2009-08-18 11:27 2606跟我StepByStep学FLEX教程------Cairng ... -
跟我StepByStep学FLEX教程------Demo15之Cairngorm
2009-08-10 15:45 2651跟我StepByStep学FLEX教程------Demo15 ... -
跟我StepByStep学FLEX教程------Cairngorm之环境准备
2009-08-06 15:01 4181跟我StepByStep学FLEX教程------Cairng ... -
跟我StepByStep学FLEX教程------Cairngorm之组成部分
2009-08-05 10:31 3072跟我StepByStep学FLEX教程------Cairng ... -
跟我StepByStep学FLEX教程------MVC
2009-07-28 10:41 2928跟我StepByStep学FLEX教程------MVC ... -
跟我StepByStep学FLEX教程------Caringorm之简介
2009-07-27 11:50 3408跟我StepByStep学FLEX教程------Caring ... -
跟我StepByStep学FLEX教程------Demo14Flex+Spring+Hibernate整合
2009-07-14 13:29 4805跟我StepByStep学FLEX教程------Demo14 ... -
跟我StepByStep学FLEX教程------Flex之Hibernate
2009-07-08 11:46 3279跟我StepByStep学FLEX教程------Flex之H ... -
跟我StepByStep学FLEX教程------Demo13之Flex访问数据库
2009-07-07 11:01 5279跟我StepByStep学FLEX教程-- ... -
跟我StepByStep学FLEX教程------访问数据库之hsqldb
2009-07-06 11:16 3628跟我StepByStep学FLEX教程------访问数据库之 ... -
跟我StepByStep学FLEX教程------访问数据库之JDBCTemplate
2009-07-03 11:06 3457跟我StepByStep学FLEX教程------访问数据库 ... -
跟我StepByStep学FLEX教程------Demo12之FLEX和Spring整合
2009-07-02 10:53 4775跟我StepByStep学FLEX教程------FLEX和S ...
相关推荐
Demo6:自定义事件&自定义组件 - **自定义事件**:了解如何创建自定义事件类以及如何分发这些事件。 - **自定义组件**:教授如何扩展Flex内置组件或从头开始创建新组件。 #### 13. Demo7:页面跳转 - **导航架构...
8. 自定义事件和组件:Flex允许开发者创建自定义事件,以响应特定的操作或条件。同时,也可以开发自定义组件,以扩展现有的组件集合或创建特定的UI元素。 9. 页面跳转:在开发多页面应用程序时,页面跳转是基本需求...
跟我StepByStep学FLEX教程.pdf 跟我StepByStep学FLEX教程.pdf 跟我StepByStep学FLEX教程.pdf 跟我StepByStep学FLEX教程.pdf 跟我StepByStep学FLEX教程.pdf
Flex教程详解:逐步掌握动态富互联网应用开发 Flex是由Adobe公司推出的一种用于构建富互联网应用程序(RIA)的技术,它基于ActionScript编程语言和MXML标记语言。本教程旨在引导学习者一步步深入理解Flex,帮助他们...
根据给定的信息,我们可以将《跟我StepByStep学FLEX》这本教程的主要知识点概括如下: ### FLEX基础 #### 概述 - **FLEX介绍**:FLEX是一种用于构建跨平台桌面应用程序和移动设备应用程序的技术。它结合了HTML、...
- **自定义组件**:除了内置组件外,开发者还可以根据需求创建自定义组件。这部分会教授如何定义自己的组件并封装成库供以后使用。 #### 五、综合案例 - **页面跳转**:Flex支持复杂的导航逻辑,本节将通过实际...
2. **跟我StepByStep学FLEX教程------王一松.pdf**:这是一本面向初学者的教程,由王一松编著。通过逐步的教学方式,讲解了Flex的基础知识,包括环境搭建、界面设计、事件处理、数据绑定等内容。适合没有FLEX背景的...
《跟我StepByStep学FLEX教程》是由王一松编写的,旨在通过一系列深入浅出的示例,帮助读者从零开始掌握Flex的各项技术要点,从而能够独立开发出功能丰富、交互流畅的应用程序。 一、Flex入门与环境搭建 在《跟我...
《安装算量(实例体验)入门教程(StepByStep)---消防报警篇(2)》是一份关于建筑电气安装算量的详细指南,主要讲解了消防报警系统的布线与识别布置过程,以及工程图的分层管理。以下是教程中涉及的关键知识点: 1. **...
《安装算量(实例体验)入门教程(StepByStep)---消防水篇借鉴》 本文主要介绍了使用金格软件进行安装工程量计算的入门教程,特别是针对消防水系统的计算。教程分为七个章节,旨在帮助初学者逐步理解并掌握专业安装算...
《安装算量(实例体验)入门教程(StepByStep)---消防报警篇(2)》是一份详尽的教程,旨在帮助初学者掌握安装算量软件的使用,特别是在消防报警系统的回路识别与布置方面。以下是对教程内容的详细解析: 在消防报警系统...