flash PureMVC 使用例子

此例环境:
flash cs3
链接PureMVC类<编辑->首选参数->ActionScript->ActioScript 3.0 设置(加上你的下载的PureMVC类包), PureMVC下载地址>
开始动手喽~
1, 在flash里准备一下要显示层的东东:
此例就画了一个背景方框, 添加一个动态的TextField命名为txt, 然后绑定一个类AppTextField.as;
AppTextField.as里需要接收一个字符串并显示出来, 些字符串数据就是来自于数据层的(后面有介绍)


代码如下:

AppTextField.as

package myapp.view.component{
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.text.TextField;

public class AppTextField extends Sprite{

public function AppTextField(str:String):void{
txt.text = str;
}
}
}

2, 准备数据
建立一个DataProxy.as文件用于存放数据(此例只是一个字符串),此类要继承Proxy实现接口IProxy.


代码如下:

DataProxy.as

package myapp.model{
import org.puremvc.as3.patterns.proxy.Proxy;
import org.puremvc.as3.interfaces.IProxy;

public class DataProxy extends Proxy implements IProxy{
private var _info:String;
static public const NAME:String = "DataProxy";

public function DataProxy() {
super(NAME);
return;
}

public function get info():String {
return "Ok! Is very good!";
}
}
}

3.注册启动命令(复合):StartupCommand和两个子命令ModelPrepCommand, ViewPrepCommand(数据初始化和显示层初始化)


代码如下:

StartupCommand.as

package myapp.controller{
import org.puremvc.as3.patterns.command.MacroCommand;

public class StartupCommand extends MacroCommand {
// 程序开始时执行的 MacroCommand.
public function StartupCommand() {
return;
}
//添加子Command 初始化 MacroCommand.
override protected function initializeMacroCommand():void {
//以下两个命令按先进先出顺序执行;
addSubCommand(ModelPrepCommand);
addSubCommand(ViewPrepCommand);
return;
}
}
}

代码如下:

ModelPrepCommand.as

package myapp.controller{
import myapp.model.*;
import org.puremvc.as3.interfaces.ICommand;
import org.puremvc.as3.interfaces.INotification;
import org.puremvc.as3.patterns.command.SimpleCommand;

public class ModelPrepCommand extends SimpleCommand implements ICommand {
//创建 Proxy 对象,并注册;
public function ModelPrepCommand() {
return;
}
//由MacroCommand 调用;
public override function execute(sender:INotification):void {
facade.registerProxy(new DataProxy());
return;
}
}
}

代码如下:

ViewPrepCommand.as

package myapp.controller{
import myapp.view.*;
import org.puremvc.as3.interfaces.ICommand;
import org.puremvc.as3.interfaces.INotification;
import org.puremvc.as3.patterns.command.SimpleCommand;

public class ViewPrepCommand extends SimpleCommand implements ICommand {

public function ViewPrepCommand() {
return;
}
// 创建 Mediator, 并把它们注册到View;
public override function execute(sender:INotification):void {
var obj:Main;
obj = sender.getBody() as Main;
facade.registerMediator(new AlertMediator(obj));
return;
}
}
}

4.创建Mediator对象类AlertMediator.as用于操作具体显示层组件(此例是AppTextField.as)


代码如下:

AlertMediator.as

package myapp.view{
import myapp.MyappFacade;
import myapp.model.DataProxy;
import myapp.view.component.AppTextField;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.text.TextField;
import flash.events.Event;
import org.puremvc.as3.interfaces.IMediator;
import org.puremvc.as3.patterns.mediator.Mediator;

public class AlertMediator extends Mediator implements IMediator {
private var data:DataProxy;
static public const NAME:String = "AlertMediator";

public function AlertMediator(obj:Object) {
super(NAME, obj);
data = facade.retrieveProxy(DataProxy.NAME) as DataProxy;
var t:AppTextField = new AppTextField(data.info);
main.addChild(t);
}
function get main():Main {
return viewComponent as Main;
}
}
}

5.创建建立Command与Notification之间的映射关系类MyappFacade.as


代码如下:

MyappFacade.as

package myapp{
import org.puremvc.as3.interfaces.IFacade;
import org.puremvc.as3.patterns.facade.Facade;

import myapp.view.*;
import myapp.model.*;
import myapp.controller.*;

// MyApp 程序的 Facade 类
public class MyappFacade extends Facade implements IFacade {
//定义 Notification (通知)常量
public static const STARTUP:String = "startup";
public static const LOGIN:String = "login";

//得到ApplicationFacade 单例的工厂方法
public static function getInstance():MyappFacade {
if ( instance == null ) {
instance = new MyappFacade( );
}
return instance as MyappFacade;
}

//注册 Command,建立Command 与 Notification 之间的映射
override protected function initializeController( ):void {
super.initializeController();
registerCommand( STARTUP, StartupCommand );
}

//启动 PureMVC,在应用程序中调用此方法,并传递应用程序本身的引用
public function startup( app:Main ):void {
sendNotification( STARTUP, app );
}
}
}

6.创建主文档类Main.as(启动命名)


代码如下:

Main.as

package {
import myapp.*;
import flash.display.*;

public class Main extends Sprite {
private var facade:MyappFacade;

public function Main() {
facade = MyappFacade.getInstance();
//执行开始命令;
facade.startup(this);
return;
}
}
}

可能写的不清不楚啊, 哈~~ 有问题请留言一起探讨吧!
文件打包下载(www.jb51.net)

(0)

相关推荐

  • flash PureMVC 使用例子

    此例环境:flash cs3链接PureMVC类<编辑->首选参数->ActionScript->ActioScript 3.0 设置(加上你的下载的PureMVC类包), PureMVC下载地址>开始动手喽~1, 在flash里准备一下要显示层的东东: 此例就画了一个背景方框, 添加一个动态的TextField命名为txt, 然后绑定一个类AppTextField.as; AppTextField.as里需要接收一个字符串并显示出来, 些字符串数据就是来自于数据层的(后面有

  • php获取flash尺寸详细数据的方法

    本文实例讲述了php获取flash尺寸详细数据的方法.分享给大家供大家参考,具体如下: 有时我们的网站需要获取flash文件的尺寸信息,php有一个内置的函数可以实现,这个函数就是getimagesize,他可以返回图像的尺寸及文件类型的一个数组. 如果你还想着通过解析swf文件头信息来获取flash文件的尺寸信息,那真的有点走远了,因为从PHP 4开始已经内置getimagesize函数来做这个事,其功能测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2

  • CKEditor4配置与开发详细中文说明文档

    一.CKEditor4安装 安装CKEditor 是很容易的.选择合适的过程(新安装或升级),按下面描述的步骤安装. 1.新安装 第一次安装CKEditor,按如下方式进行: 1) 从CKEditor 网站:http://ckeditor.com/download下载最新版本的CKEditor .  2) 将下载的文档解压到你的website根目录下的ckeditor 目录中.你可以将文档放在你的website的任意路径中.ckeditor 目录是缺省目录. 2.升级 要升级现有的CKEdito

  • javascript向flash swf文件传递参数值注意细节

    问题:如何使用javascript向SWF文件传递参数? 在网上找了一个完整的教程,很有启发性和实用性,如下是完整实现的步骤: 配置SwfObject: Swfobject2是目前检测用户是否安装Flash的最佳方法.它被认为是'行业标准',并且Adobe所有产品的新版本(Flex4,Flash CS5)都会使用SwfObject来检测Flash Player. 先要下载,解压ZIP文件,复制swfobject.js文件到你的web服务器上,根目录下创建名为'js'根文件夹是个不错的想法.(因此

  • flash与js通讯方法

    今天主要学习一下js与flash是如何通讯滴. 1.先学习一下 getURL(url, window, variables) 使用 getURL 语句,可以让指定的浏览器窗口,转向显示指定的URL地址.参数(url)指定要显示WEB页面文档的 URL 地址.参数(window)指定要要显示WEB页面文档的浏览器窗口,它可以是指定为自定义的窗口名称,也可以 如果想让它执行调用js函数执行,那么可以这样 on (release) {   getURL(\"JavaScript:alert('hell

  • Js+Flash实现访问剪切板操作

    最近需要遇到了这个问题点击按钮复制链接的功能果断度娘谷哥.最后找到得解决方案ZeroClipBoard一款开源得js+Flash实现得剪切板操作 但是搜寻了众多例子之后发现大多都是介绍一个页面只有一个固定的复制操作 而我得需求是这样 一个动态Repeater动态加载出各个地址和复制按钮. 这个解决方案得原理是: 拿js动态加载一个透明flash.然后遮盖到你要点击得按钮上面,之后在给这个flash得承载元素上绑定事件动态把要复制得值传递到flash中,用flash访问剪切板. 这时候就出现这么一

  • 在网页里看flash的trace数据的js类

    功能: flash的调用些方法能在网页中看到flash的trace方法输出的数据; 方法: 1. init(w,h,z);//w为显示界面的宽度, h为显示界面的高, z为层级(最好放在最顶层);<此方法可以省略> 2. trace(str);//要输出的数据; 使用: 1. 把jdhcn.js导入, 点击下载jdhcn.js 2. 在body里可以重写一个函数(也可以不写): 程序代码 <script language="javascript"> functi

  • 用PHP动态创建Flash动画

    Macromedia 公司出品的 Flash 动画软件现已经成为Web页面上非常流行的表现工具,网站开发者利用它引起浏览者的兴趣.然而不幸的是,仅仅使用ActionScript创建动画受到很大的限制,Macromedia已经宣布,打算放弃Flash Generator产品,转而采用支持Flash MX的Cold Fusion,我们的网站将向何处去呢?现在,我们可以利用Ming PHP库来轻松地动态创建Flash动画,并且和我们的代码无缝集成.我们可以根据数据库里的数据创建出各种不同效果的动画.

  • 为php4加入动态flash文件的生成的支持

    想象过在网站上动态生成flash动画吗,本文就让你步入php+flash的激动时代. php真是个好东西呀,真是无法预料她明天会变的怎样...好了,言归正传,下面 介绍怎样实现这个功能. 一.需要的软件 swf的支持库 http://reality.sgi.com/grafica/flash/dist.99.linux.tar.Z 这个包里面有文档,你可以用c来使用它,他的例子就是. 这哥们太好了,不过他要是提供源码就更好了. 还有当然是php4了从http://www.php.net得到 二.

  • 能不能在flash动画中给asp传递变量?

    复制代码 代码如下: 能不能在flash动画中给asp传递变量?   faq-it.org/vb/--------------------------------------------------------------- 数据库结构:   第一步要做的是建立数据库.例子中使用Access数据库,表名为tblStaff   有三个字段:strID  (自动编号),  strKnownAs(Text),strSurname  (Text).   这是一个用来示范用户名的数据库,随便加些数据把. 

随机推荐