第七篇,自定义按钮

这次弄个简单点的,自定义按钮。
其实,有了前面所定义的LSprite,LBitmap等类,定义按钮就很方便了。
下面是添加按钮的代码,

function gameInit(event){backLayer = new LSprite();addChild(backLayer);btn01 = new LButton(new LBitmap(new LBitmapData(imglist["replay_button_up"])),new LBitmap(new LBitmapData(imglist["replay_button_over"])));btn01.x = 76;btn01.y = 50;backLayer.addChild(btn01);btn02 = new LButton(new LBitmap(new LBitmapData(imglist["quit_button_up"])),new LBitmap(new LBitmapData(imglist["quit_button_over"])));btn02.x = 76;btn02.y = 100;backLayer.addChild(btn02);btn01.addEventListener(LMouseEvent.MOUSE_DOWN, onmousedown01);btn02.addEventListener(LMouseEvent.MOUSE_DOWN, onmousedown02);
}
function onmousedown01(event){alert("btn01 on click");
}
function onmousedown02(event){alert("btn02 on click");
}

原理:建立一个继承自LSprite的LButton类,给按钮设定两个图片,然后侦听鼠标位置,当鼠标移动到按钮上的时候,变换按钮状态,就是一个简单的按钮。

这里,我用mousemove来侦听鼠标位置,给LGlobal类添加一个buttonList数组,当创建按钮的时候,把按钮加入到buttonList,然后当移动鼠标的时候,就可以从buttonList数组判断鼠标是否在按钮上,然后当按钮被删除后,将按钮从buttonList数组中删除。

一些修改:
1,修改LSprite类,添加die方法,每个LSprite当被removeChild的时候,调用自己的die方法,die方法里放一些被移除是必需处理的事件,比如这次的按钮,要从buttonList中删除。
2,给每个构造器添加objectindex,用来区分每个对象。
3,修改addChild方法,添加DisplayObject.parent = self,就是给每个自对象指定父级对象。

准备完毕,开始创建按钮类LButton。

function LButton(bitmap_up,bitmap_over){base(this,LSprite,[]);var self = this;self.type = "LButton";self.bitmap_up = bitmap_up;self.addChild(bitmap_up);if(bitmap_over == null){bitmap_over = bitmap_up;}else{self.addChild(bitmap_over);}self.bitmap_over = bitmap_over;self.bitmap_over.visible = false;self.bitmap_up.visible = true;LGlobal.buttonList.push(self);
}LButton.prototype.buttonModeChange = function (){var self = this;var cood={x:0,y:0};var parent = self.parent;while(parent != "root"){cood.x += parent.x;cood.y += parent.y;parent = parent.parent;}if(self.ismouseon(LGlobal.mouseMoveEvent,cood)){self.bitmap_up.visible = false;self.bitmap_over.visible = true;}else{self.bitmap_over.visible = false;self.bitmap_up.visible = true;}
}
LButton.prototype.die = function (){var self = this;arguments.callee.super.die.call(this);for(var i=0;i<LGlobal.buttonList.length;i++){if(LGlobal.buttonList[i].objectindex == self.objectindex){LGlobal.buttonList.splice(i,1);break;}}
}

看一下成果吧,看不到效果的请下载支持html5的浏览器

http://fsanguo.comoj.com/html5/jstoas06/index.html

用仿ActionScript的语法来编写html5——第七篇,自定义按钮相关推荐

  1. html游戏让目标人物移动,用仿ActionScript的语法来编写html5——第三篇,鼠标事件与游戏人物移动...

    第三篇,鼠标事件与游戏人物移动 一,假设 假设,所有可添加鼠标事件的对象,都有一个mouseEvent方法,添加的鼠标事件同过这个mouseEvent来调用. 这样的话,添加鼠标事件,其实只需要给ca ...

  2. 用仿ActionScript的语法来编写html5——第五篇,Graphics绘图

    用仿ActionScript的语法来编写html5--第五篇,Graphics绘图 用仿ActionScript的语法来编写html5--第一篇,显示一张图片 http://blog.csdn.net ...

  3. 用仿ActionScript的语法来编写html5——第六篇,TextField与输入框

    用仿ActionScript的语法来编写html5--第六篇,TextField与输入框 一,对比 1,html5中 首先看看在html5的canvas中的文字显示 var canvas = docu ...

  4. 用仿ActionScript的语法来编写html5——第三篇,鼠标事件与游戏人物移动

    第三篇,鼠标事件与游戏人物移动 一,假设 假设,所有可添加鼠标事件的对象,都有一个mouseEvent方法,添加的鼠标事件同过这个mouseEvent来调用. 这样的话,添加鼠标事件,其实只需要给ca ...

  5. 用仿ActionScript的语法来编写html5——终篇,LegendForHtml5Programming1.0开源库件

    一,LegendForHtml5Programming1.0库件是什么? 它是一个javascript库,它模仿了ActionScript的语法,用于html5的开发,目前实现的功能相对较少,还不能称 ...

  6. 用仿ActionScript的语法来编写html5——第二篇,利用Sprite来实现动画

    上一篇,我已经模仿as,加入了LBitmap和LBitmapData类,并且用它们实现了静态图片的显示. 这次用Sprite来动态显示图片. 依然遵循上一篇对显示对象的处理的思路,添加LSprite类 ...

  7. html5语法参考图片,仿AS语法来写HTML5—第1章,显示一张图片

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

  8. 原生html js css绘制折现图,HTML5教程 Chart.js自定义提示折线图

    本篇教程探讨了HTML5教程 Chart.js自定义提示折线图,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < var randomScalingFactor ...

  9. wxWidgets:编写一个应用程序 - 添加一个按钮

    wxWidgets:编写一个应用程序 - 添加一个按钮 wxWidgets:编写一个应用程序 - 添加一个按钮 wxWidgets:编写一个应用程序 - 添加一个按钮 感谢您阅读本教程至少到此为止.在 ...

最新文章

  1. git 提交跳过检查
  2. 如何保证高可用?java测试工程师测试的方法
  3. 那些年Android黑科技①:只要活着,就有希望
  4. 线性模型(3):Logistic Regression
  5. sql server 里面怎么支持数字使用双引号_国查:用中文编写SQL
  6. CAS Client 3.2.1 配置详解
  7. 实现两数 交换的三种不同编程方法。
  8. 一个简单CI/CD流程的思考
  9. 大众点评运维架构详大揭秘!
  10. 软件配置管理(SCM)介绍
  11. 日均千万级消息规模,深捷旅使用函数计算释放运维压力
  12. 理解“正反馈”和“负反馈”,学会系统性思考
  13. 六安职院美和易思互联网+特色专业举行第一届HTML网页设计大赛
  14. pandas 读取excel文件
  15. 不得不了解的HTTP协议
  16. Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)! To rerun under ARM use: ar
  17. ccf试题棋局评估c语言,第十三次CCF CSP认证(2018年3月)真题棋局评估 题解
  18. 如何把Excel中的文本数字转换成数字
  19. 接口自动化测试怎么做?该怎么学习
  20. 扫雷,潜伏者(python)

热门文章

  1. ubuntu tmp目录overflow的解决方案
  2. Java 项目热部署,节省构建时间的正确姿势
  3. 2023年天津专升本招生实施政策
  4. arcgis唯一值数已达到默认限制(大于3365536).
  5. 【网络硬件】6.什么是路由器?
  6. 新浪微博 OAuth2 NodeJs发微博
  7. Anaconda安装教程粗解
  8. Easyx中鼠标的使用。
  9. 20230210组会总结
  10. 小程序开发工具_有哪些好用的微信小程序开发工具?如何选择?