|
|
随笔分类 -
As
摘要:直接外部传入参数:import subprocessimport osdef compile(sdk, mainPath, configPath=None, callback=None): os.chdir(sdk + "/bin/") cmdName = 'mxmlc' args...
阅读全文
摘要:今天遇到打开FlashBuilder秒退, 网上找到了解决办法:进入.metadata/.plugins/org.eclipse.core.resources 目录删除.snap文件如果是苹果系统,则目录有可能是:.metadata\org.eclipse.core.resources\还以为是我的...
阅读全文
摘要:实现一个登陆的例子 Model:模型,负责数据获取与存储、对外提供数据更新接口、提供请求数据的方法 先定义模型接口, 提供登陆(login)和获取玩家数据(getUserEntity)接口.package model{import flash.events.IEventDispatcher;import model.entities.UserEntity;/** * @author daichangxin */public interface IUserModel extends IEventDispatcher{ function login(userName:String, pass...
阅读全文
摘要:遇到过两种状态模式的写法, 第一种是从别人那里看到的, 先写一个状态机类, 然后注册所有的状态, 通过字符串注册和获取状态的方式来切换, 切换方法在状态机中统一管理. 看例子: 给一个物体设置五个状态, 站立idle, 移动move, 攻击attack, 被击attacked, 死亡death. 对应五个状态. 状态机类, 管理所有的状态注册和切换状态的方法, 当然对于特殊的情况可以复写切换状态方法以实现特定的功能. package badDesign{import flash.utils.Dictionary;/** * @author daichangxin */public class
阅读全文
摘要:FDT一直报这个错, 找了好多的资料, 很多都说是FlashPlayer版本的问题, 可是我的是debug版的一点没错, 后来想想该不会是我的ip问题吧, 于是在FlashPlayer里调试器设置里连接从localhost改成我本地的ip, 然后很神奇的就看到Console有输出了.
阅读全文
摘要:观察者是解决一对多关系的模式,主题发生变化所有感兴趣的观察者都会知道。观察者有推和拉之分,主要在于在一对多时的数据如何传输,是Subject直接将Observer需要的参数具体的绑定在Observer的update接口上(推),还是只是简单的通知数据发生改变,然后让Observer保存Subject引用自己去获取自己需要的数据(拉)。 举例用户信息改变,需要同时刷新用户信息面板和当前打开的商店面板上的用户信息,因为它们使用的都是用户信息,所以当用户信息发生变化时这两个面板都需要同步发生变化。 主题的接口: package push{/** * @author daichangxin */pub
阅读全文
摘要:把调用封装起来,在需要用到的时候直接调用就可以了,至于逻辑如何处理不关心,实现调用者与执行者之间的解耦。可以同时执行多个命令,命令拥有undo接口取消执行。打开电灯和打开收音机的例子, command接口: package core{/** * @author daichangxin */public interface ICommand{ function execute():void; function undo():void;}}开灯命令:package core{/** * @author daichangxin */public class LightOnCommand ...
阅读全文
摘要:策略模式其实就是定义了一堆的算法,然后在实例化对象(或者需要更改对象的行为)的时候去定义具体实现的算法,比如商场打折,如果一开始就定死价格计算的算法,那么每次商场做活动都意味着要重新写一次价格计算。为了更好实现对象的行为,而且可以重复使用这些行为和行为的不同组合,那么就使用策略模式。比如打折例子 定义价格定义的接口 package core{/** * @author daichangxin */public interface IStrategy{ function countCost(price:Number):Number;}}打五折的算法实现:package core{/** *...
阅读全文
摘要:在游戏中会有很多的实例对象,比如装饰品,装备等,一个同类型的装备会有很多件,这时候如果每次在显示数据或者使用该装备时都要从服务端发回这个装备的所有数据就给服务端增加太大压力了,常见的做法就是把基础属性全部做配置,然后在游戏启动时载入并在内存中实例化这些实例,在需要使用的时候后端只需要发送某武将装备instance001武器,客户端就可以直接读取内存中实例化好的数据来做显示。 配置的数据结构,一般这类数据都是单一对象,所以每个配置里的每一条数据都要有单独的instanceId,每个数据类型都接受构造参数传入(要保证顺序),还有属性的设置。上代码(未整理,有点粗糙。。。): 生成实例静态类(最多接
阅读全文
摘要:使用TextField的Event.CHANGE事件传递的时候, fdt内置的external player会侦听到两次CHANGE事件. 下面这个例子运行时, 我只输入了一个字符"s": package test {import flash.display.Sprite;import flash.events.Event;import flash.text.TextField;import flash.text.TextFieldType;/** * @author daichangxin */public class Test extends Sprite{ priva
阅读全文
摘要:希腊人特修斯走迷宫的方法: 永远沿着右手边的墙壁, 只要不是回路, 就一定能走出迷宫. 在这里需要定义几个方法: 左转:turnLeft() 右转:turnRight() 是否面向墙壁:ifFaceWall() 是否走出迷宫:ifOutSize() 往前走一格:moveForward() 具体思路, 以是否走出为跳出条件循环进行以下步骤: 右转如果现在面壁, 则循环turnLeft一直到不面壁向前走一步while (!this.ifOutSide()){ this.turnRight(); while (this.ifFaceWall()) { this.tur...
阅读全文
摘要:为了让物体有些立体感, 游戏中往往使用斜45度角来显示图像, 包括寻路等等, 相对应的格子都使用菱形绘图, 因为这样方便摆放和深度层级摆放排序. 1 如何摆放菱形格子? 菱形格子的通用尺寸是高为size, 宽为2 * size, 这样美术方便作图, 程序也方便计算. 这样计算下来其实(0, 0)的上方顶点(即舞台的<size, 0>点)与横坐标的角度实际是 atan(1/2 * size / size), 大约等于26.56度. 这里坐标系是向右为x正方向, 向下为y正方向, 与Flash的坐标系一致, 相对应的索引位置(3, 1)则表示x为4个单位, y为2个单位的坐标点: 从图
阅读全文
摘要:对于python, 如果引用了一个包(比如vo包)中一个文件(比如user.py)中的一个类(比如User类), 那么代码执行的顺序是: 先执行vo包中的__init__.py中的代码, 然后执行user.py中的代码, 最后执行User的构造方法 对于as3, 如果引用了包(vo)中的User类, 但是却没有实例化User实例, 那么User.as中在package关键字外部的代码是不执行的, 只有实例化的时候才会执行. 比如: main.as: package packageTest{import packageTest.vo.User;import flash.display.Sprit
阅读全文
|