`
aijuans9
  • 浏览: 12895 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

用仿ActionScript的语法来编写html5——第一篇,显示一张图片

阅读更多

最近开始学习html5,因为一直都是研究as,所以还是觉得as顺眼一点,但是html5也不能不学,于是就想出了,可以把html5用as的语法来写出来,做游戏应该来的比较顺手一些,下面开始第一篇

 

 

第一篇,显示一张图片

一,代码对比

as代码:
[java] view plaincopy
  1. public var loader:Loader;  
  2. public function loadimg():void{  
  3.     loader = new Loader();  
  4.     loader.contentLoaderInfo.addEventListener(Event.COMPLETE,complete);  
  5.     loader.load(new URLRequest("10594855.png"));  
  6. }  
  7. public function complete(event:Event):void{  
  8.     var image:Bitmap = Bitmap(loader.content);  
  9.     var bitmap:BitmapData = image.bitmapData;  
  10.     addChild(image);  
  11. }  

js代码:
[javascript] view plaincopy
  1. window.onload = function(){    
  2.     var canvas = document.getElementById("myCanvas");    
  3.     var context = canvas.getContext("2d");    
  4.      
  5.     image = new Image();    
  6.     image.onload = function(){    
  7.         context.drawImage(image, 0, 0, 240, 240);    
  8.     };    
  9.     image.src = "10594855.png";  
  10. };  

二,编写js类库(暂命名为legend库)后的代码

[javascript] view plaincopy
  1. var loader;  
  2. function main(){  
  3.     loader = new LLoader();  
  4.     loader.addEventListener(LEvent.COMPLETE,loadBitmapdata);  
  5.     loader.load("10594855.png","bitmapData");  
  6. }  
  7. function loadBitmapdata(event){  
  8.     var bitmapdata = new LBitmapData(loader.content);  
  9.     var bitmap = new LBitmap(bitmapdata);  
  10.     addChild(bitmap);  
  11. }  

三,实现

1,建一个静态类,方便保存及访问公共的方法属性,比如canvas等

[javascript] view plaincopy
  1. var LGlobal = function (){}  
  2. LGlobal.type = "LGlobal";  

我们始终都用到canvas,所以要把canvas保存起来,给LGlobal类添加属性和方法
[javascript] view plaincopy
  1. LGlobal.canvas = null;  
  2. LGlobal.width = 0;  
  3. LGlobal.height = 0;  
  4. LGlobal.setCanvas = function (id,width,height){  
  5.     var canvasObj = document.getElementById(id);  
  6.     if(width)canvasObj.width = width;  
  7.     if(height)canvasObj.height = height;  
  8.     LGlobal.width = canvasObj.width;  
  9.     LGlobal.height = canvasObj.height;  
  10.     LGlobal.canvas = canvasObj.getContext("2d");  
  11. }   

界面的显示,为了能够动态显示,选择不停的刷新canvas
给LGlobal类添加一个不停刷新的方法
[javascript] view plaincopy
  1. LGlobal.onShow = function (){  
  2.     if(LGlobal.canvas == null)return;  
  3.     LGlobal.canvas.clearRect(0,0,LGlobal.width,LGlobal.height);  
  4. }  

然后,我预想把所有现实的对象等都保存在一个数组里面,然后按照顺序显示
而所有可以显示的对象,都有一个show方法,用来把自己画到canvas上
LGlobal类最后修改为
[javascript] view plaincopy
  1. var LGlobal = function (){}  
  2. LGlobal.type = "LGlobal";  
  3. LGlobal.canvas = null;  
  4. LGlobal.width = 0;  
  5. LGlobal.height = 0;  
  6. LGlobal.childList = new Array();  
  7. LGlobal.setCanvas = function (id,width,height){  
  8.     var canvasObj = document.getElementById(id);  
  9.     if(width)canvasObj.width = width;  
  10.     if(height)canvasObj.height = height;  
  11.     LGlobal.width = canvasObj.width;  
  12.     LGlobal.height = canvasObj.height;  
  13.     LGlobal.canvas = canvasObj.getContext("2d");  
  14. }   
  15. LGlobal.onShow = function (){  
  16.     if(LGlobal.canvas == null)return;  
  17.     LGlobal.canvas.clearRect(0,0,LGlobal.width,LGlobal.height);  
  18.     LGlobal.show(LGlobal.childList);  
  19. }  
  20. LGlobal.show = function(showlist){  
  21.     var key;  
  22.     for(key in showlist){  
  23.         if(showlist[key].show){  
  24.             showlist[key].show();  
  25.         }  
  26.     }  
  27. }  

2,as中,图片显示用到BitmapData和Bitmap两个类,为了实现这两个类的功能,我们分别创建两个类LBitmapData和LBitmap

先来看LBitmapData类,LBitmapData类用来储存图片的数据等,我们把Image()储存到LBitmapData类里面
[javascript] view plaincopy
  1. function LBitmapData(image,x,y,width,height){  
  2.     var self = this;  
  3.     self.type = "LBitmapData";  
  4.     self.oncomplete = null;  
  5.     if(image){  
  6.         self.image = image;  
  7.         self.x = (x==null?0:x);    
  8.         self.y = (y==null?0:y);    
  9.         self.width = (width==null?self.image.width:width);    
  10.         self.height = (height==null?self.image.height:height);  
  11.     }else{  
  12.         self.x = 0;    
  13.         self.y = 0;    
  14.         self.width = 0;    
  15.         self.height = 0;  
  16.         self.image = new Image();  
  17.     }  
  18. }  

在看LBitmap类,LBitmap类用来显示LBitmapData类里储存的Image()
[javascript] view plaincopy
  1. function LBitmap(bitmapdata){  
  2.     var self = this;  
  3.     self.type = "LBitmap";  
  4.     self.x = 0;    
  5.     self.y = 0;    
  6.     self.width = 0;    
  7.     self.height = 0;    
  8.     self.scaleX=1;  
  9.     self.scaleY=1;  
  10.     self.visible=true;  
  11.     self.bitmapData = bitmapdata;   
  12.     if(self.bitmapData){  
  13.         self.width = self.bitmapData.width;  
  14.         self.height = self.bitmapData.height;  
  15.     }  
  16. }  

关于Image()的显示,我们用到一开始说的show方法,实现如下
[javascript] view plaincopy
  1. LBitmap.prototype = {  
  2.     show:function (){  
  3.         var self = this;  
  4.         if(!self.visible)return;  
  5.         LGlobal.canvas.drawImage(self.bitmapData.image,  
  6.                 self.bitmapData.x,self.bitmapData.y,self.bitmapData.width,self.bitmapData.height,  
  7.                 self.x,self.y,self.width*self.scaleX,self.height*self.scaleY);  
  8.     }  
  9. }  

3,最后,还差一个Loader,我们建立自己的LLoader类
[javascript] view plaincopy
  1. function LLoader(){  
  2.     var self = this;  
  3.     self.loadtype = "";  
  4.     self.content = null;  
  5.     self.oncomplete = null;  
  6.     self.event = {};  
  7. }  
  8. LLoader.prototype = {  
  9.     addEventListener:function(type,listener){  
  10.         var self = this;  
  11.         if(type == LEvent.COMPLETE){  
  12.             self.oncomplete = listener;  
  13.         }  
  14.     },  
  15.     load:function (src,loadtype){  
  16.         var self = this;  
  17.         self.loadtype = loadtype;  
  18.         if(self.loadtype == "bitmapData"){  
  19.             self.content = new Image();  
  20.             self.content.onload = function(){  
  21.                 if(self.oncomplete){  
  22.                     self.event.currentTarget = self.content;  
  23.                     self.oncomplete(self.event);  
  24.                 }  
  25.             }  
  26.             self.content.src = src;   
  27.         }  
  28.     }  
  29. }  

4,在3里面用到了LEvent类,LEvent类是一个事件类,用来加载事件,点击等,这个以后再慢慢强化
[javascript] view plaincopy
  1. var LEvent = function (){};  
  2. LEvent.COMPLETE = "complete";  
  3. LEvent.ENTER_FRAME = "enter_frame";  
  4.   
  5.   
  6. LEvent.currentTarget = null;  
  7. LEvent.addEventListener = function (node, type, fun){  
  8.     if(node.addEventListener){  
  9.         node.addEventListener(type, fun, false);  
  10.     }else if(node.attachEvent){  
  11.         node['e' + type + fun] = fun;  
  12.         node[type + fun] = function(){node['e' + type + fun]();}  
  13.         node.attachEvent('on' + type, node[type + fun]);  
  14.     }  
  15. }  

5,在显示之前,我们需要有个addChild方法,如下
[javascript] view plaincopy
  1. function addChild(DisplayObject){  
  2.     LGlobal.childList.push(DisplayObject);  
  3. }  

6,最后,在整个页面读取完成后,就可以把图片显示出来了
[javascript] view plaincopy
  1. function init(speed,canvasname,width,height,func){  
  2.     LEvent.addEventListener(window,"load",function(){  
  3.         setInterval(function(){LGlobal.onShow();}, speed);  
  4.         LGlobal.setCanvas(canvasname,width,height);  
  5.         func();  
  6.     });  
  7. }  
  8. init(40,"back",300,300,main);  
  9. var loader;  
  10. function main(){  
  11.     loader = new LLoader();  
  12.     loader.addEventListener(LEvent.COMPLETE,loadBitmapdata);  
  13.     loader.load("10594855.png","bitmapData");  
  14. }  
  15. function loadBitmapdata(event){  
  16.     var bitmapdata = new LBitmapData(loader.content);  
  17.     var bitmap = new LBitmap(bitmapdata);  
  18.     addChild(bitmap);  
  19. }  
分享到:
评论

相关推荐

    Flex第一步——基于ActionScript 3

    本篇内容将深入探讨“Flex第一步——基于ActionScript 3”,这对于初学者来说是一份极具价值的学习资料。 首先,我们需要了解ActionScript 3。ActionScript是Flash平台的核心语言,而ActionScript 3是其最新版本,...

    第一篇原创 flash as3.0----第一课时

    【标题】:“第一篇原创 Flash AS3.0——第一课时” 在Flash开发领域,ActionScript 3.0(简称AS3.0)是Adobe Flash Professional中的编程语言,用于创建交互式内容、游戏和动画。AS3.0相比之前的版本有显著的性能...

    ActionScript开发技术大全

    第1篇ActionScript3.0语言基础 第1章ActionScript3.0概述 2 1.1ActionScript概述 2 1.1.1ActionScript环境 2 1.1.2ActionScript3.0特性 3 1.1.3ActionScript3.0代码组织 5 1.2ActionScript3.0API概览 5 1.3小结 8 第...

    FlashCS平面动画案例教程与实训第章使用Actionscript动作脚本制作交互动画完美版资料.ppt

    《FlashCS平面动画案例教程与实训——使用Actionscript动作脚本制作交互动画》 本教程专注于使用Actionscript,一种强大的脚本语言,来在Flash CS中创作具有交互性的平面动画。Actionscript是Flash动画的灵魂,它...

    ActionScript3.0开发人员指南

    #### 第5章 使用正则表达式 正则表达式是文本处理的强大工具,本章详细阐述了如何在AS3中使用正则表达式进行字符串匹配和搜索。 - **正则表达式基础知识**:介绍正则表达式的概念,包括基本语法和特殊字符。 - **...

    细细品味Flex——新Flex学习手册.pdf

    《细细品味Flex——新Flex学习手册》是一份详尽的指南,旨在帮助读者深入理解Adobe Flex框架,并掌握其在富互联网应用(RIA)开发中的应用。本书由虾皮工作室整理,河北工业大学——软件工程与理论实验室参与制作,...

    一步步学习Flex

    总之,学习Flex需要理论与实践相结合,通过安装开发环境,编写基础应用,逐渐掌握Flex组件、ActionScript语法和数据绑定等核心概念。不断尝试实例,加深理解,你将能自如地创建功能丰富的RIA应用。

    Flash AS 入门教程

    总之,Flash AS入门涉及理解编程基本概念、熟悉ActionScript语法和使用Flash创作环境。通过不断练习和探索,初学者可以逐渐掌握编程技能,实现富有创意的Flash项目。记住,编程并不难,多练习和实践是提升的关键。让...

    Flex初体验

    这篇博文的作者分享了他们初次接触Flex的心得和体验,可能会涉及Flex的基础概念、开发环境搭建、编写第一个Flex应用程序等步骤。 【描述】虽然描述部分是空的,但我们可以通过常规的Flex学习路径来推测内容。在Flex...

    Flash.CS3网站商业设计从入门到精通第6章__Flash常用交互技术——加载方法

    在Flash中,可以使用行为(预编写的ActionScript脚本)轻松地控制声音内容,如MP3文件。行为简化了对音频的控制,使得无需编写复杂的脚本就能实现交互功能。例如,可以为按钮分配行为来播放、停止或改变音量。 ...

    flash打字效果

    **AS3语法**:在实现打型效果的ActionScript中,主要会用到`TextField`类和其方法,如`appendText()`用于添加文本,`text`属性用于获取或设置文本字段的内容,以及`setTimeout()`函数(或第三方库中的类似函数)来...

    Flex从入门到实践——源代码(15,16,17章)

    Flex是Adobe公司开发的一种用于构建富互联网应用(RIA)的框架,主要基于ActionScript和MXML语言。这个压缩包文件包含的源代码可能是对《Flex从入门到实践》这本书的第15、16和17章的学习示例,旨在帮助读者通过实际...

    flash AS3.0教程 经典教程

    《Flash AS3.0教程——经典教程》是一本专为初学者设计的全面指南,旨在帮助新接触ActionScript 3.0的用户快速掌握这一强大的编程语言,从而在Flash平台上开发出富有交互性的动画和应用。AS3.0是Adobe Flash ...

    04-PS-FL-DW工具箱.rar

    Photoshop CS4是Adobe Photoshop的第11个版本,是一款广泛使用的图像处理和图形设计软件。《Photoshop CS4帮助手册.pdf》应该是官方提供的用户指南,涵盖了该软件的功能、工作流程和技巧,帮助用户从基础到进阶地...

    flash动画应用脚本大全

    学习ActionScript的第一步是掌握如何在不同的对象上添加动作。这包括在帧、影片剪辑(MC)和按钮上添加动作。基础命令如`play()`, `stop()`, `gotoAndPlay()`等是非常常用的,通过反复练习可以巩固基础。 2. **...

    Flex 3 in Action

    这包括安装Adobe Flex SDK、配置开发工具(如Adobe Flash Builder或Eclipse等)、编写第一个Flex应用程序等。 #### 使用ActionScript 第三章“与ActionScript一起工作”则聚焦于ActionScript 3.0编程语言。...

    火影忍者flash游戏

    【火影忍者Flash游戏】是一款基于Adobe Flash技术制作的互动娱乐项目,由开发者使用ActionScript 3(AS3)编程语言编写而成。ActionScript是Flash平台的核心,它赋予了Flash内容动态交互的能力,使得游戏、动画以及...

Global site tag (gtag.js) - Google Analytics