iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >AS3 mvc应用
  • 147
分享到

AS3 mvc应用

mvc 2023-01-31 07:01:00 147人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

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

          在程序开发中,为了降低程序的耦合度,我们经常会对程序进行模式化,这一节中,我们介绍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面向对象化,视图层与控制层割开来,那么开发起来就更加方便维护更加有条理性.

--结束END--

本文标题: AS3 mvc应用

本文链接: https://www.lsjlt.com/news/191402.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • AS3 mvc应用
              在程序开发中,为了降低程序的耦合度,我们经常会对程序进行模式化,这一节中,我们介绍MVC的设计模式,MVC由三层结构构成,分别是视图器(view),模型器(model),控制器(control)。视图器view的作用是显...
    99+
    2023-01-31
    mvc
  • PHP基于MVC的Web应用
    预计更新 第一章:入门 1.1 环境搭建1.2 变量和数据类型1.3 控制流程 第二章:函数 2.1 函数的定义和调用2.2 函数的参数和返回值2.3 匿名函数和闭包 第三章:数组 3.1 数组的基本...
    99+
    2023-08-31
    php mvc 前端
  • AS3实用小知识
    1.Math类随机数:Math.random();                ⑴Math.ceil()舍去小数部分并加1                ⑵Math.floor()舍去小数部分                ⑶Math.r...
    99+
    2023-01-31
    小知识
  • Laravel路由与MVC怎么应用
    这篇文章主要讲解了“Laravel路由与MVC怎么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel路由与MVC怎么应用”吧!1、路由路由的作用就是将用户的不同url请求转发给...
    99+
    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....
    99+
    2023-01-31
    Snort apach
  • JavaScript MVC架构实战指南:一步步构建你的第一个MVC应用
    本文将介绍如何使用JavaScript MVC架构构建一个简单的应用程序,并提供详细的演示代码。 1. 模型 模型是应用程序的数据存储和业务逻辑,它负责应用程序的业务逻辑,并对数据进行操作。在JavaScript MVC架构中,模型通常是...
    99+
    2024-02-12
    JavaScript MVC架构 模型 视图 控制器 应用程序
  • ASP.NET MVC模式中应用程序结构详解
    目录一、App_Data二、App_Start三、Content四、Controllers五、font六、Models七、Scripts八、Views九、Web.config1、根目...
    99+
    2024-04-02
  • Spring MVC数据响应如何处理
    本篇内容介绍了“Spring MVC数据响应如何处理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 内置视图解析器Spring...
    99+
    2023-06-30
  • AS3中Flex正则表达式怎么用
    这篇文章给大家分享的是有关AS3中Flex正则表达式怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。AS3中的Flex正则表达式一、定义方式,可以有两种varpattern1:RegExp=newRegExp...
    99+
    2023-06-17
  • Spring MVC数据响应处理详解
    目录1. 内置视图解析器2. 使用原生servlet的对象传递数据3. 使用ModelAndView对象传输数据4. 使用Model、Map、ModelMap传输数据5. 使用ses...
    99+
    2024-04-02
  • ASP.NET MVC 如何使用索引提高响应速度?
    在处理大量数据时,ASP.NET MVC 应用程序可能会变得非常缓慢,这可能会降低用户体验并导致用户流失。为了解决这个问题,可以使用索引来提高 ASP.NET MVC 应用程序的响应速度。在本文中,我们将探讨什么是索引以及如何在 ASP....
    99+
    2023-08-12
    索引 响应 spring
  • ASP.NET MVC怎么实现layui富文本编辑器应用
    这篇文章主要讲解了“ASP.NET MVC怎么实现layui富文本编辑器应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ASP.NET MVC怎么实现la...
    99+
    2024-04-02
  • 基于Dojo如何实现MVC模式下的Ajax应用
    基于Dojo如何实现MVC模式下的Ajax应用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。本人要实现项目中的一项应用是控制服...
    99+
    2024-04-02
  • Spring-MVC怎么用
    这篇文章给大家分享的是有关Spring-MVC怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。引言MVC :Model-View-Control框架性质的C 层要完成的主要工作:封装web 请求为一个数据对象...
    99+
    2023-06-17
  • PHP MVC 架构:构建面向未来的 Web 应用程序
    引言 在当今快速发展的数字世界中,构建健壮、灵活且可维护的 Web 应用程序至关重要。PHP MVC 架构提供了实现这一目标的理想解决方案。MVC(模型-视图-控制器)是一种广泛使用的设计模式,可以将应用程序的各个方面分离为独立的组件。...
    99+
    2024-03-02
    PHP、MVC、Web 开发、面向对象编程、软件架构
  • Spring MVC使用教程
    Spring MVC使用教程?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是Spring MVC  Spring MVC属于SpringFrameWork的后续产品,已...
    99+
    2023-05-31
    spring mvc
  • 响应式设计如何影响 ASP.NET MVC 索引的使用?
    随着移动设备的广泛使用,越来越多的网站开始采用响应式设计,以提供更好的用户体验。ASP.NET MVC 是一个流行的 Web 开发框架,也可以使用响应式设计来提高用户体验。但是,响应式设计是否会影响 ASP.NET MVC 索引的使用呢?...
    99+
    2023-08-11
    索引 响应 spring
  • .NET MVC Razor怎么用
    .NET MVC Razor怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。忙碌的工作总是占据了生活的大部分的时间!所以我的博客到现在还是寥寥的几篇文章,技...
    99+
    2023-06-17
  • Node.js 开发者的福音:Sails.js 助你创建超速 MVC 应用
    Sails.js 是一个基于 Node.js 和 Express.js 的全栈 JavaScript 框架,旨在简化 MVC 模型的开发。它提供了广泛的功能,包括自动 RESTful API 生成、实时数据流、认证、授权和国际化支持,使开...
    99+
    2024-04-02
  • ASP.NET MVC 中索引的作用和响应式设计的影响。
    ASP.NET MVC 中索引的作用和响应式设计的影响 在ASP.NET MVC中,索引是一种非常重要的概念。它可以显著提高数据库查询的性能,从而提高整个应用程序的响应速度。同时,响应式设计也是一种非常流行的设计方法,它可以让我们的网站更加...
    99+
    2023-08-12
    索引 响应 spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作