`
Fis
  • 浏览: 87892 次
  • 性别: Icon_minigender_1
  • 来自: 龙城
社区版块
存档分类
最新评论
文章列表
2012.3.14 基本三角函数的计算: 角的正弦值 = 对边 / 斜边 角的余弦值 = 邻边 / 斜边 角的正切值 = 对边 / 邻边 角度制与弧度制的相互转换: 弧度 = 角度 * Math.PI / 180 角度 = 弧度 * 180 / Math.PI 向鼠标旋转(或向某点旋转): // substitute mouseX, mouseY with the x, y point to rotate to dx = mouseX - sprite.x; dy = mouseY - sprite.y; sprite.rotation = Math.atan2 ...
  Adapter模式的另一种作法是Class Adapter模式,在这个模式下,Adapter直接继承Adaptee(要引进的新类别),以拥有当中的成员及方法,在C++中的话可以这么作: adapter-3.jpg   C++中可以多重继承,但在Java中不行,所以在Java中若 ...
  您的电脑是个旧电脑,新的滑鼠都在使用USB接口了,而您的电脑上并没有USB,而只有一个PS2接口,这时您可以使用一个USB转PS2的接头作为转换,这样您的电脑就可以使用新滑鼠了(当然您也可以使用USB扩充卡,意思是相同的)。   类似的概念,有时候您想在原来的程式中加入一个外部元件,例如一个类别,但是这个类别与您目前所设计的程式在介面上并不一致,为了让这个外部类与原程式的介面一致,您必须使用一个类别作为中介来配接它们,这时您可以采用Adapter模式。     举个例子来说,在Java 1.0中有个Enumeration,您在这个版本发行之后,使用它来设计了一个MessageApplic ...
  在Java中如果要定义事件处理的方式,必须实作EventListener的子介面,例如实作 WindowListener来定义一些视窗事件的处理方式,WindowListener中定义了七个方法: public interface WindowListener extends EventListener { public void windowOpened(WindowEvent e); public void windowClosing(WindowEvent e); public void windowClosed(Win ...
  考虑使用 Singleton 模式 时拥有子类别的问题,在Singleton模式中的getInstance()通常是一个静态方法,不能在子类别中重新定义它,关于子类别实例的产生交由getInstance()来进行是最好的选择,例如: public class Singleton { private static Singleton instance = null; private Singleton() { // .... } public static Singleton ge ...
  Singleton的英文意义是独身,也就是只有一个人,应用在物件导向语言上,通常翻译作单例:单一个实例(Instance)。   很多时候,您会需要Singleton模式,例如印表机管理,您希望程式中只能有一个Print Spooler,以避免两个列 ...
  您从图书馆的期刊从发现了几篇您感兴趣的文章,由于这是图书馆的书,您不可以直接在书中作记号或写字,所以您将当中您所感兴趣的几个主题影印出来,这下子您就可在影印的文章上画记重点。   Prototype模式的作用有些类似上面的描述,您在父类别中定义一个clone()方法,而在子类别中重新定义它,当客户端对于所产生的物件有兴趣并想加以利用,而您又不想破坏原来的物件,您可以产生一个物件的复本给它。   Prototype具有展示的意味,就像是展览会上的原型车款,当您对某个车款感兴趣时,您可以购买相同款示的车,而不是车展上的车。   在软体设计上的例子会更清楚的说明为何要进行物件复制,假设您要设 ...
  考虑一个状况,您所经营的工厂正在生产一个新的电视机产品,现在有一个问题发生了,您的电视机产品所有的组件都可以自行生产,像是操作面版、电源、摇控装置等等等,但荧幕却必须依赖另一个厂商或子厂商供应,这 ...
  您想要建立一个迷宫产生程式,迷宫使用二维阵列来定义,0表示道路,1表示墙,2表示宝物,根据所定义的二维迷宫阵列,您想要程式自动产生各种不同材质的迷宫,例如砖墙迷宫,钻石迷宫等等。   您可以在程式中定义两个角色,一个是指导迷宫建立的Director角色,一个是按照指导者指示建立迷宫的Builder角色,Director根据定义的迷宫阵列来指导Builder,只要更换Builder,就可以完成不同材质的迷宫。   可以使用下面的UML 类别图来表示上述的概念: builder-1.jpg   实际上的程式设计如下: MazeDirector.java public cla ...
  假设您要制作一个对话方块(Dialog)元件,您希望的是这个对话方块可以有不同的视感(Look-and- feel),最基本的想法是,藉由Setter将不同视感的元件设定给这个对话方块,例如: CustomDialog.java public class CustomDialog { private IButton button; private ITextField textField; public void setButton(IButton button) { this.button = bu ...
文章来源:Gossip@caterpillar   Simple Factory模式(又称Static Factory模式),一个Simple Factory生产成品,而对客户端隐藏产品产生的细节。实作时定义一个产品介面(interface),并透过特定静态方法来建立成品。   假设有一个音乐盒工厂,购买音乐盒的客人不用知道音乐盒是如何制作的,他只要知道如何播放音乐盒就可以了,以 UML 类别图来表示以上的概念:   如上图所示的,MusicBoxDemo代表了客户的角色,它只依赖于IMusicBox介面,而不关心特定的实作,实际如何产生IMusicBox的实例由MusicBoxFactory ...
文章来源:Gossip@caterpillar   程式设计是思维具体化的一种方式,是思考如何解决问题的过程,设计模式是在解决问题的过程中,一些良好思路的经验集成,最早讲设计模式,人们总会提到 Gof  的著作,它最早将经典的 23 种模式集合在一起说明,对后期学习程式设计,尤其是对从事物件导向程式设计的人们起了莫大的影响。   后来设计模式一词被广泛的应用到各种经验集成,甚至还有反模式(AntiPattern),反模式教导您如何避开一些常犯且似是而非的程式设计思维。   这边的话将整理一些设计模式学习心得,实作的部份是使用Java,因而您会看到一些与 Gof 模式不同的图及实作方式,这是为了 ...
  如果一个监听事件是匿名函数,那当要移除的时候就会有困扰,既没有函数名称,怎么移除呢?下面有一方法: EventListener(event.currentTarget).removeEventListener(event.type,arguments.callee);   通过此句,便可移除当前监听事件。 注:arguments.callee返回的是当前引用的函数。   下面是一个例子: addEventListener(MouseEvent.CLICK,function(event:MouseEvent){ trace("click!~~~ " ...
  通常情况下,我们使用事件机制时,编写的事件处理函数只需要一个参数event就可以了,但是有时,如果需要用到额外的数据, 又不想新建自定义事件类时,就可以用到这种支持参数的事件处理函数了,这种方式是在网上看到的,这里收集整理一下。其原理是利用函数的返回值返回一个带有基本事件类作参数的函数,用这个返回值作事件的处理函数,因为这个函数是在另一个函数中返回的,所以它在具备普通的事件处理函数的功能的前提下又可以扩展出我们想要的功能。下面是代码: function createParamHandler(handler:Function,... arg):Function { ...
  很久没写些什么了,一起聊下游戏吧,虽然经验不多,当作一次小小的总结吧。   首先总结一下游戏的结构。   抛开游戏框架、设计思路、游戏策划,大部分包含等角地图游戏都需要以下几部分:时间管理、用户管理、弹窗管理、地图世界、任务管理、静态资源管理、语言管理、数据管理、对象管理。这些组成部分有可能包含一个到多个类,共同协作完成他们的工作。 1、时间管理   游戏里的时间,游戏一开始运行这个时间就启动了,一直到游戏的关闭。一般都只用一个Timer来完成,以节省开销。它主要负责记录一些必要的时间值,给游戏需要用到时间的地方提供必要的属性和数据,例如游戏的倒计时功能和补帧解决flash player最 ...
Global site tag (gtag.js) - Google Analytics