IntroScn.pas
嗟夫
DELPHI 输入法相关知识
凡是窗口类 都有TImeMode 这是个集合 其中包含有:
TImeMode = (imDisable, imClose, imOpen, imDontCare,
imSAlpha, imAlpha, imHira, imSKata, imKata,
imChinese, imSHanguel, imHanguel);
指定 imDisable 的话 IME 变得无效。既无法作使用了 IME 的输入,即使用户的操作也无法
让 IME 有效。
指定 imClose 的话 IME 变得无效。和 imDisable 不同,能用用户的操作让 IME 有效。
指定 imOpen 的话 IME 变得有效。
指定 imDontCare 的话 IME 的有效 /无效的情况,继承之前的情况。根据用户的操作而让
IME 有效之类等等能做。在日文输入方面,,是让用户自由地输入半角 /全角文字的情况的一
般的模式。
指定 imSAlpha 的话 IME 变得有效,成为半角拉丁字母输入模式。
指定 imAlpha 的话 IME 变得有效,成为全角拉丁字母输入模式。
指定 imHira 的话 IME 变得有效,成为平假名输入模式。
指定 imSKata 的话 IME 变得有效,成为半角片假名输入模式。
指定 imKata 的话 IME 变得有效,成为全角片假名输入模式。
指定 imChinese 的话 IME 变得有效,成为接受 2 位元中文输入的模式。无法在日文环境能
使用。
指定 imSHanguel 的话 IME 变得有效,成为接受 1 位元韩文输入的模式。无法在日文环境能
使用。
指定 imHanguel 的话 IME 变得有效,成为接受 2 位元韩文输入的模式。无法在日文环境能
使用。
标签: delphi
7 0 1
6 2
5 4 3
//左手
0+8=8-2
1+8=9-2
2+8=10 -10
3+8=11-10
4+8=12-10
5+8=13-10
6+8=14-10
7+8=15-10
//右手
0+2=2
1+2=3
2+2=4
3+2=5
4+2=6
5+2=7
6+2=8 - 8
7+2=9 - 8
标签: 游戏心得
嗟夫
APP魔法顺序笔记
以冰咆哮为例:
首先是客户端:
1、TfrmMain.ProcessKeyMessages 里面
1.1、nMagID := GetMagIDByKey(nKey); 根据按键取得魔法ID
1.2、调用UseMagic()函数来制造这个魔法
2、在UseMagic() 函数里面
2.1、判断MP是否足够
2.2、判断要生成魔法的坐标位置等信息
2.3、g_MySelf.SendMsg()发送CM_SPELL信息
3、在TActor.ReadyAction里面拦截到CM_SPELL信息
3.1、将信息的索引 msg.Ident改为 SM_SPELL 注意这里收到这个信息包后并没有删除
UseMagic!就在同一个函数中 执行到下面的 SM_SPELL 会继续处理这个信息包
3.3、 运行到 SM_SPELL段 取得UseMagic里面的内容 将它放入 m_CurMagic 然后删除掉
这个UseMagic
4、在THumActor.CalcActorFrame
此刻才到引擎:
1、再然后引擎搜索周围的玩家 除了自己外 都发送 SM_SPELL给对方 因为自己已经执行过动
画
里面定义的类,全部没有属性
嗟夫
武器的最大攻击与最小攻击的算法
比如 最小值 17
最大值 29
计算方式是
17+ 取随机数(29-17)=最终值!
嗟夫
APPLE源码从DELPHI2007升级DELPHIDX4的总结
今天我成功的将APPLE源码的HGEDELPHI控件从DELPHI2007平台升级到DELPHIXE4的一些记录:
1.1:PAK资源文件的资源头段字节大小不对 原先的是64 而XE4下是87
这个是因为char 的缘故,在XE4下 CHAR 不再是AnsiChar 而是 wideChar 这样导致文件
头大小不对。
1.2:ZLIB的参数变化 XE4下的ZLIB已经有所改动,导致原来的指针转换出错。
已完成对PAK的处理
2.1:HGEDELPHI控件的D3DX81ab.dll因为是事先转为字节然后内存加载的,而这个内存加载DLL
的函数在XE4下不修复是无法使用的。
一种办法是处理好内存加载,另一种办法是去掉内存加载 直接将HGE换成DX9。我选择了第二
种办法。
已解决
TScene = class 这个从tobject开始
里面只多了一个SceneType: TSceneType;
而TSceneType 定义
TSceneType = (stIntro, stLogin, stSelectCountry, stSelectChr, stNewChr,
stLoading,stLoginNotice, stPlayGame);
然后是 Create(scenetype: TSceneType)
里面就是个SceneType,就没有了。
应该是有个默认的TOBJECT.CREATE的。
其它的都是动态方法,实际可以改成虚方法。
初始化
procedure Initialize; dynamic;
结束化
procedure Finalize; dynamic;
打开场景
procedure OpenScene; dynamic;
关闭场景
procedure CloseScene; dynamic;
正打开场景
procedure OpeningScene; dynamic;
键盘输入
procedure KeyPress(var Key: Char); dynamic;
procedure KeyDown(var Key: Word; Shift: TShiftState); dynamic;
鼠标输入
procedure MouseMove(Shift: TShiftState; X, Y: Integer); dynamic;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
dynamic;
播放场景
procedure PlayScene(MSurface: TDirectDrawSurface); dynamic;
TIntroScene = class(TScene)继承于TScene
里面inherited Create(stIntro); 设置了SceneType
Destroy也是inherited。对TScene)的继承
constructor Create;
重写了这个几个,但实际里面都是空的???
destructor Destroy; override;
procedure OpenScene; override;
procedure CloseScene; override;
procedure PlayScene(MSurface: TDirectDrawSurface); override;
TLoginScene = class(TScene)
里面终于有点内容了
对应登陆场景,里面
各种输入框,TEdit
对用户的输入定义的记录
m_NewIdRetryUE: TUserEntry;
m_NewIdRetryAdd: TUserEntryAdd;
里面对应了4种情况
登陆框
lsLogin: focus := 10;
新建帐号,新建帐号重试
lsNewIdRetry, lsNewId: focus := 11;
更改密
lsChgpw: focus := 12;
对应了FSate 里面的3种面板框
DLogIn
DNewAccount
DChgPw
他们需要结合在以前使用。
ChangeLoginState这个来改变这4种情况
对 面板框上的点击事件,调用了这里的处理
比如说DLogIn框上的 新建帐号点击事件,调用了NewClick
所以得结合起来看
标签:CLIENT8,10,IME,翎风,dynamic,指定,输入,procedure From: https://www.cnblogs.com/D7mir/p/18178595