最近开始学习html5,因为一直都是研究as,所以还是觉得as顺眼一点,但是html5也不能不学,于是就想出了,可以把html5用as的语法来写出来,做游戏应该来的比较顺手一些,下面开始第一篇
第一篇,显示一张图片
一,代码对比
as代码:
- public var loader:Loader;
- public function loadimg():void{
- loader = new Loader();
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE,complete);
- loader.load(new URLRequest("10594855.png"));
- }
- public function complete(event:Event):void{
- var image:Bitmap = Bitmap(loader.content);
- var bitmap:BitmapData = image.bitmapData;
- addChild(image);
- }
js代码:
- window.onload = function(){
- var canvas = document.getElementById("myCanvas");
- var context = canvas.getContext("2d");
-
- image = new Image();
- image.onload = function(){
- context.drawImage(image, 0, 0, 240, 240);
- };
- image.src = "10594855.png";
- };
二,编写js类库(暂命名为legend库)后的代码
- var loader;
- function main(){
- loader = new LLoader();
- loader.addEventListener(LEvent.COMPLETE,loadBitmapdata);
- loader.load("10594855.png","bitmapData");
- }
- function loadBitmapdata(event){
- var bitmapdata = new LBitmapData(loader.content);
- var bitmap = new LBitmap(bitmapdata);
- addChild(bitmap);
- }
三,实现
1,建一个静态类,方便保存及访问公共的方法属性,比如canvas等
- var LGlobal = function (){}
- LGlobal.type = "LGlobal";
我们始终都用到canvas,所以要把canvas保存起来,给LGlobal类添加属性和方法
- LGlobal.canvas = null;
- LGlobal.width = 0;
- LGlobal.height = 0;
- LGlobal.setCanvas = function (id,width,height){
- var canvasObj = document.getElementById(id);
- if(width)canvasObj.width = width;
- if(height)canvasObj.height = height;
- LGlobal.width = canvasObj.width;
- LGlobal.height = canvasObj.height;
- LGlobal.canvas = canvasObj.getContext("2d");
- }
界面的显示,为了能够动态显示,选择不停的刷新canvas
给LGlobal类添加一个不停刷新的方法
- LGlobal.onShow = function (){
- if(LGlobal.canvas == null)return;
- LGlobal.canvas.clearRect(0,0,LGlobal.width,LGlobal.height);
- }
然后,我预想把所有现实的对象等都保存在一个数组里面,然后按照顺序显示
而所有可以显示的对象,都有一个show方法,用来把自己画到canvas上
LGlobal类最后修改为
- var LGlobal = function (){}
- LGlobal.type = "LGlobal";
- LGlobal.canvas = null;
- LGlobal.width = 0;
- LGlobal.height = 0;
- LGlobal.childList = new Array();
- LGlobal.setCanvas = function (id,width,height){
- var canvasObj = document.getElementById(id);
- if(width)canvasObj.width = width;
- if(height)canvasObj.height = height;
- LGlobal.width = canvasObj.width;
- LGlobal.height = canvasObj.height;
- LGlobal.canvas = canvasObj.getContext("2d");
- }
- LGlobal.onShow = function (){
- if(LGlobal.canvas == null)return;
- LGlobal.canvas.clearRect(0,0,LGlobal.width,LGlobal.height);
- LGlobal.show(LGlobal.childList);
- }
- LGlobal.show = function(showlist){
- var key;
- for(key in showlist){
- if(showlist[key].show){
- showlist[key].show();
- }
- }
- }
2,as中,图片显示用到BitmapData和Bitmap两个类,为了实现这两个类的功能,我们分别创建两个类LBitmapData和LBitmap
先来看LBitmapData类,LBitmapData类用来储存图片的数据等,我们把Image()储存到LBitmapData类里面
- function LBitmapData(image,x,y,width,height){
- var self = this;
- self.type = "LBitmapData";
- self.oncomplete = null;
- if(image){
- self.image = image;
- self.x = (x==null?0:x);
- self.y = (y==null?0:y);
- self.width = (width==null?self.image.width:width);
- self.height = (height==null?self.image.height:height);
- }else{
- self.x = 0;
- self.y = 0;
- self.width = 0;
- self.height = 0;
- self.image = new Image();
- }
- }
在看LBitmap类,LBitmap类用来显示LBitmapData类里储存的Image()
- function LBitmap(bitmapdata){
- var self = this;
- self.type = "LBitmap";
- self.x = 0;
- self.y = 0;
- self.width = 0;
- self.height = 0;
- self.scaleX=1;
- self.scaleY=1;
- self.visible=true;
- self.bitmapData = bitmapdata;
- if(self.bitmapData){
- self.width = self.bitmapData.width;
- self.height = self.bitmapData.height;
- }
- }
关于Image()的显示,我们用到一开始说的show方法,实现如下
- LBitmap.prototype = {
- show:function (){
- var self = this;
- if(!self.visible)return;
- LGlobal.canvas.drawImage(self.bitmapData.image,
- self.bitmapData.x,self.bitmapData.y,self.bitmapData.width,self.bitmapData.height,
- self.x,self.y,self.width*self.scaleX,self.height*self.scaleY);
- }
- }
3,最后,还差一个Loader,我们建立自己的LLoader类
- function LLoader(){
- var self = this;
- self.loadtype = "";
- self.content = null;
- self.oncomplete = null;
- self.event = {};
- }
- LLoader.prototype = {
- addEventListener:function(type,listener){
- var self = this;
- if(type == LEvent.COMPLETE){
- self.oncomplete = listener;
- }
- },
- load:function (src,loadtype){
- var self = this;
- self.loadtype = loadtype;
- if(self.loadtype == "bitmapData"){
- self.content = new Image();
- self.content.onload = function(){
- if(self.oncomplete){
- self.event.currentTarget = self.content;
- self.oncomplete(self.event);
- }
- }
- self.content.src = src;
- }
- }
- }
4,在3里面用到了LEvent类,LEvent类是一个事件类,用来加载事件,点击等,这个以后再慢慢强化
- var LEvent = function (){};
- LEvent.COMPLETE = "complete";
- LEvent.ENTER_FRAME = "enter_frame";
-
-
- LEvent.currentTarget = null;
- LEvent.addEventListener = function (node, type, fun){
- if(node.addEventListener){
- node.addEventListener(type, fun, false);
- }else if(node.attachEvent){
- node['e' + type + fun] = fun;
- node[type + fun] = function(){node['e' + type + fun]();}
- node.attachEvent('on' + type, node[type + fun]);
- }
- }
5,在显示之前,我们需要有个addChild方法,如下
- function addChild(DisplayObject){
- LGlobal.childList.push(DisplayObject);
- }
6,最后,在整个页面读取完成后,就可以把图片显示出来了
- function init(speed,canvasname,width,height,func){
- LEvent.addEventListener(window,"load",function(){
- setInterval(function(){LGlobal.onShow();}, speed);
- LGlobal.setCanvas(canvasname,width,height);
- func();
- });
- }
- init(40,"back",300,300,main);
- var loader;
- function main(){
- loader = new LLoader();
- loader.addEventListener(LEvent.COMPLETE,loadBitmapdata);
- loader.load("10594855.png","bitmapData");
- }
- function loadBitmapdata(event){
- var bitmapdata = new LBitmapData(loader.content);
- var bitmap = new LBitmap(bitmapdata);
- addChild(bitmap);
- }
分享到:
相关推荐
本篇内容将深入探讨“Flex第一步——基于ActionScript 3”,这对于初学者来说是一份极具价值的学习资料。 首先,我们需要了解ActionScript 3。ActionScript是Flash平台的核心语言,而ActionScript 3是其最新版本,...
【标题】:“第一篇原创 Flash AS3.0——第一课时” 在Flash开发领域,ActionScript 3.0(简称AS3.0)是Adobe Flash Professional中的编程语言,用于创建交互式内容、游戏和动画。AS3.0相比之前的版本有显著的性能...
第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动作脚本制作交互动画》 本教程专注于使用Actionscript,一种强大的脚本语言,来在Flash CS中创作具有交互性的平面动画。Actionscript是Flash动画的灵魂,它...
#### 第5章 使用正则表达式 正则表达式是文本处理的强大工具,本章详细阐述了如何在AS3中使用正则表达式进行字符串匹配和搜索。 - **正则表达式基础知识**:介绍正则表达式的概念,包括基本语法和特殊字符。 - **...
《细细品味Flex——新Flex学习手册》是一份详尽的指南,旨在帮助读者深入理解Adobe Flex框架,并掌握其在富互联网应用(RIA)开发中的应用。本书由虾皮工作室整理,河北工业大学——软件工程与理论实验室参与制作,...
总之,学习Flex需要理论与实践相结合,通过安装开发环境,编写基础应用,逐渐掌握Flex组件、ActionScript语法和数据绑定等核心概念。不断尝试实例,加深理解,你将能自如地创建功能丰富的RIA应用。
总之,Flash AS入门涉及理解编程基本概念、熟悉ActionScript语法和使用Flash创作环境。通过不断练习和探索,初学者可以逐渐掌握编程技能,实现富有创意的Flash项目。记住,编程并不难,多练习和实践是提升的关键。让...
这篇博文的作者分享了他们初次接触Flex的心得和体验,可能会涉及Flex的基础概念、开发环境搭建、编写第一个Flex应用程序等步骤。 【描述】虽然描述部分是空的,但我们可以通过常规的Flex学习路径来推测内容。在Flex...
在Flash中,可以使用行为(预编写的ActionScript脚本)轻松地控制声音内容,如MP3文件。行为简化了对音频的控制,使得无需编写复杂的脚本就能实现交互功能。例如,可以为按钮分配行为来播放、停止或改变音量。 ...
**AS3语法**:在实现打型效果的ActionScript中,主要会用到`TextField`类和其方法,如`appendText()`用于添加文本,`text`属性用于获取或设置文本字段的内容,以及`setTimeout()`函数(或第三方库中的类似函数)来...
Flex是Adobe公司开发的一种用于构建富互联网应用(RIA)的框架,主要基于ActionScript和MXML语言。这个压缩包文件包含的源代码可能是对《Flex从入门到实践》这本书的第15、16和17章的学习示例,旨在帮助读者通过实际...
《Flash AS3.0教程——经典教程》是一本专为初学者设计的全面指南,旨在帮助新接触ActionScript 3.0的用户快速掌握这一强大的编程语言,从而在Flash平台上开发出富有交互性的动画和应用。AS3.0是Adobe Flash ...
Photoshop CS4是Adobe Photoshop的第11个版本,是一款广泛使用的图像处理和图形设计软件。《Photoshop CS4帮助手册.pdf》应该是官方提供的用户指南,涵盖了该软件的功能、工作流程和技巧,帮助用户从基础到进阶地...
学习ActionScript的第一步是掌握如何在不同的对象上添加动作。这包括在帧、影片剪辑(MC)和按钮上添加动作。基础命令如`play()`, `stop()`, `gotoAndPlay()`等是非常常用的,通过反复练习可以巩固基础。 2. **...
这包括安装Adobe Flex SDK、配置开发工具(如Adobe Flash Builder或Eclipse等)、编写第一个Flex应用程序等。 #### 使用ActionScript 第三章“与ActionScript一起工作”则聚焦于ActionScript 3.0编程语言。...
【火影忍者Flash游戏】是一款基于Adobe Flash技术制作的互动娱乐项目,由开发者使用ActionScript 3(AS3)编程语言编写而成。ActionScript是Flash平台的核心,它赋予了Flash内容动态交互的能力,使得游戏、动画以及...