我的编程空间,编程开发者的网络收藏夹
学习永远不晚

AS3 mvc应用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

AS3 mvc应用

          在程序开发中,为了降低程序的耦合度,我们经常会对程序进行模式化,这一节中,我们介绍MVC的设计模式,MVC由三层结构构成,分别是视图器(view),模型器(model),控制器(control)。视图器view的作用是显示对象,即我们肉眼看到的元素。而视图器需要的数据我们把它放到模型器model里,那如何操作这些数据呢,这便涉及到我们的逻辑,我们把这部分的程序放进控制器control里。所以,实际上是控制器control在操作模型器model,使其发生数据的改变,而引起model发出相应的事件,视图器view侦听到这些事件时相应的改变视图。应用MVC的结构可以让我们的程序更加有条理更加清晰。下面是一个MVC的小例子。由三个类跟一个文档类构成:
        这个例子主要是:点击按钮时让文本的数据加100.功能很简单。
        首先是视图类:MyView.as.  它只有一个按钮跟一个文本。当点击按钮时,我们调用control的方法changeNum。同时,我们在MyView监听model的数据改变事件。
      
package View    
{
  import flash.display.Sprite;
  import flash.text.TextField;
  import flash.events.*;
    
  import Model.MyModel;
  import Control.MyControl;
  
  public class MyView extends Sprite
  {
    private var _model:MyModel;
    private var _control:MyControl;
    private var _showBtn:CustomSimpleButton;
    private var _showLabel:TextField ;
    
    public function MyView(model:MyModel,control:MyControl)    
    {
      this._model = model, this._control = control;
      initConfig();//初始化界面
      initListener();//添加侦听器
    }
    
    private function initConfig():void {
      _showBtn = new CustomSimpleButton();
      _showBtn.x = 50, _showBtn.y = 50;
                        this.addChild(_showBtn);
        
        _showLabel = createTextField(0, 20, 200, 20);
        _showLabel.x = 50, _showLabel.y = 30;
        _showLabel.text = "2";
        this.addChild(_showLabel)
    }
    
    private function initListener():void {
      this._showBtn.addEventListener(MouseEvent.CLICK, mouseClick)
      //注册模型器的监听
      _model.addEventListener("changeStr", showText);
    }
    
    //视图器触发 控制器的方法changeNum
    private function mouseClick(e:MouseEvent):void {
      _control.changeNum(uint(_showLabel.text))
    }
    
    public function showText(evt:Event) :void{
                        _showLabel.text = String(_model.ModelNum);
                }

                private function createTextField(x:Number, y:Number, width:Number, height:Number):TextField {
                        var result:TextField = new TextField();
                        result.x = x; result.y = y;
                        result.width = width; result.height = height;
                        addChild(result);
                        return result;
                }    
  }
}    

  import flash.display.DisplayObject;
  import flash.display.Shape;
  import flash.display.SimpleButton;

  class CustomSimpleButton extends SimpleButton {
    private var upColor:uint     = 0xFFCC00;
    private var overColor:uint = 0xCCFF00;
    private var downColor:uint = 0x00CCFF;
    private var size:uint            = 40;

    public function CustomSimpleButton() {
      downState            = new ButtonDisplayState(downColor, size);
      overState            = new ButtonDisplayState(overColor, size);
      upState                = new ButtonDisplayState(upColor, size);
      hitTestState     = new ButtonDisplayState(upColor, size * 2);
      hitTestState.x = -(size / 4);
      hitTestState.y = hitTestState.x;
      useHandCursor    = true;
    }
  }
    
  class ButtonDisplayState extends Shape {
    private var bgColor:uint;
    private var size:uint;

    public function ButtonDisplayState(bgColor:uint, size:uint) {
      this.bgColor = bgColor;
      this.size        = size;
      draw();
    }

    private function draw():void {
      graphics.beginFill(bgColor);
      graphics.drawRect(0, 0, size, size);
      graphics.endFill();
    }
  }


  
           其次是控制器类:MyControl.as,这里的操作视图器model,我们可以做更复杂的逻辑控制,这里我们简单化,只是让数据加100。
package Control    
{
  import View.MyView;
  import Model.MyModel;
  
  public class MyControl    
  {
    private var _model:MyModel;
    
    public function MyControl(model:MyModel)    
    {
      this._model = model;
    }
    
    public function changeNum(n:uint):void
    {
      //模型发出事件通知 
      var temp:uint = n +100
      _model.showNum(temp);
    }
  }
}
        再次是模型器MyModel.as,在这里我们可以根据程序需要定义不同的数据,这里我们的功能只需要一个textField需要的数据,我们定义为_ModelNum。当_ModelNum发生改变时,我们发出一个changeStr的事件,告诉视图器该修改显示元素啦。
package Model    
{
  import flash.events.Event;
  import flash.events.EventDispatcher;
  
  public class MyModel extends EventDispatcher
  {
    private var _ModelNum:uint;
    public function MyModel()    
    {
        
    }
    
    public function get ModelNum():uint
    {
      return _ModelNum;
    }
    
    //在控制器中调用此方法 。模型器发送数据更改的事件。
    public function showNum(n:uint):void
    {    
      _ModelNum = n;
      //修改
      dispatchEvent(new Event("changeStr"));
    }
    
  }
    
}
 
 
      在上面,我们已经将程序的结构MVC化,最后我们还需要一个文档类MvcDoc.as,它将实例化我们的MVC三个结构部分。
package    
{
  import flash.display.Sprite;
  import flash.events.Event;
    
  import View.MyView;
  import Control.MyControl;
  import Model.MyModel;
  
  public class MvcDoc extends Sprite    
  {
    private var _model:MyModel;    
                private var _controller:MyControl;    
                private var _view:MyView;    
    public function MvcDoc():void    
    {
      if (stage) init();
      else addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event = null):void    
    {
           _model = new MyModel();    
            _controller = new MyControl(_model);    
           _view = new MyView(_model,_controller);    
           addChild(_view);    
        
      removeEventListener(Event.ADDED_TO_STAGE, init);
    }
    
  }
    
}
         最后,我们往往会提出一个疑问:不就是一个点击按钮然后改变文本数据的功能么,直接在视图类监听按钮的事件,直接改变不就行了?为什么搞那么复杂呢?如果这样,会很容易出现以下两个缺点:1,设计逻辑制作混乱,这需要开发者有高度清晰的思路,而且还要防止各段代码之间的相互影响。2,维护起来费时、费力,可能开发者对他们的代码很熟悉,某个功能可以很快的找到,但换个人进行维护,可能读代码如读天书,修改一个小小的功能可能都是噩梦。当我们在开发大项目时,这样的划分可以让我们的程序OOP面向对象化,视图层与控制层割开来,那么开发起来就更加方便维护更加有条理性.

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

AS3 mvc应用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

AS3 mvc应用

在程序开发中,为了降低程序的耦合度,我们经常会对程序进行模式化,这一节中,我们介绍MVC的设计模式,MVC由三层结构构成,分别是视图器(view),模型器(model),控制器(control)。视图器view的作用是显示对象,即我们肉眼看
2023-01-31

AS3实用小知识

1.Math类随机数:Math.random();                ⑴Math.ceil()舍去小数部分并加1                ⑵Math.floor()舍去小数部分                ⑶Math.r
2023-01-31

Laravel路由与MVC怎么应用

这篇文章主要讲解了“Laravel路由与MVC怎么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel路由与MVC怎么应用”吧!1、路由路由的作用就是将用户的不同url请求转发给
2023-07-04

Snort安装与使用 as3+apach

系统环境:rh as3+apache+php+snort+base所需snort相关软件包:adodb462.tgzbase-1.2.6.tar.gzImage_Canvas-0.3.0.tar.gz//Image_Color-1.0.2.
2023-01-31

JavaScript MVC架构实战指南:一步步构建你的第一个MVC应用

JavaScript MVC架构是一种流行的应用程序架构,它将应用程序划分为模型、视图和控制器三个部分,每个部分都有特定的职责。本文将介绍如何使用JavaScript MVC架构构建一个简单的应用程序,并提供详细的演示代码。
JavaScript MVC架构实战指南:一步步构建你的第一个MVC应用
2024-02-12

学习MVC -第2部分:使用LINQ to SQL创建MVC应用程序和执行CRUD操作

下载PDF_Article.zip - 5.4 MB下载SqlScriptToCreateTable.zip - 659 B下载SqlScriptToCreateDatabase.zip - 1,000 B下载LearningMVC.zip - 2.3 MB介
学习MVC -第2部分:使用LINQ to SQL创建MVC应用程序和执行CRUD操作
2015-09-15

MVC、MVP、MVVM简介;Android应该如何使用MVVM

背景 目前,android流行的MVC、MVP模式的开发框架很多,然而一款基于MVVM模式开发的项目并不多。我们从当前的技术现状出发,分析下如何使用MVVM。 Android框架的发展史 一、MVC模式1、简介 MVC(Model View
2022-06-06

AS3中Flex正则表达式怎么用

这篇文章给大家分享的是有关AS3中Flex正则表达式怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。AS3中的Flex正则表达式一、定义方式,可以有两种varpattern1:RegExp=newRegExp
2023-06-17

请谈谈PHP中的MVC设计模式。(PHP中的MVC架构是怎样的?如何应用?)

MVC模式将应用程序逻辑与表现分离,在PHP中广泛应用,提供代码可重用性、可测试性、可维护性、灵活性等优势。MVC架构由模型、视图和控制器组件组成。应用时,创建模型封装数据,创建视图呈现数据,创建控制器处理请求,并配置路由。MVC的缺点包括复杂性、过度工程和学习曲线,但通过遵循最佳实践(如保持模型瘦、视图纯、控制器精简),可以最大化其好处。
请谈谈PHP中的MVC设计模式。(PHP中的MVC架构是怎样的?如何应用?)
2024-04-02

Spring MVC数据响应如何处理

本篇内容介绍了“Spring MVC数据响应如何处理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 内置视图解析器Spring MVC
2023-06-30

Spring-MVC怎么用

这篇文章给大家分享的是有关Spring-MVC怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。引言1.MVC :Model-View-Control框架性质的C 层要完成的主要工作:封装web 请求为一个数据
2023-06-17

如何创建一个简单的 MVC Codeigniter CRUD 应用程序

Codeigniter 是需要数据库集成和接口的项目的流行选择。主要原因是用于设置和使用数据库连接的简单框架内选项。这意味着 Codeign
如何创建一个简单的 MVC Codeigniter CRUD 应用程序
2022-05-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录