社区
J2ME
帖子详情
如何模拟连续按键
danielkoo
2003-12-12 02:58:46
在不支持连续按键的手机上如何模拟连续按键呢?用什么方法好呢?
我想应该使用线程把,但不知道具体怎样实现好!
...全文
36
3
打赏
收藏
微信扫一扫
点击复制链接
分享
举报
写回复
3 条
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kylinpro
2003-12-16
小弟觉得如果是一般应用的话,不一定非要用多线程实现,可以使用类似锁变量的方法至状态的切换,在keypressed时至ture,在keyup时至false。在实际的手机游戏上使用过,感觉还可以
打赏
举报
回复
赞
danielkoo
2003-12-13
谢谢楼上的,之前我自己也实现了连续按键,方法基本上与你的相同。我的方法是不断的销毁和重新生成线程。不过我看了这段代码:public void run()
{
while (true)
{
while (hasRepeat)
{
try
{
PlayG();
Thread.sleep(10);
}
catch (Exception e)
{}
}
}
}
}
让我受益匪浅,此方法好多了!真的十分感激:)
打赏
举报
回复
赞
itfly
2003-12-12
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
public class KzYxPlay extends Canvas implements CommandListener,Runnable
{
private MIDlet midlet;
private Command cmExit;
private Image fj,Dj,zd,d_zd;
private Image BzT[] = new Image[3];//爆炸的图片
public int fj_x,fj_y,zd_y,zd_x,zd_yy,w_zd,df_zd,zd_x1;
private boolean fd=false;
private boolean hasRepeat;
private int gameAction;
private Timer repeatTimer;
private Thread thread;
private RepeatTask task;
private Random var;
public KzYxPlay(MIDlet midlet)
{
this.midlet=midlet;
cmExit= new Command("退出",Command.SCREEN,1);
addCommand(cmExit);
setCommandListener(this);
try
{
fj=Image.createImage("/fj.png");
BzT[0]=Image.createImage("/bz1.png");
BzT[1]=Image.createImage("/bz2.png");
BzT[2]=Image.createImage("/bz3.png");
Dj=Image.createImage("/dj.png");
zd=Image.createImage("/zd.png");
d_zd=Image.createImage("/d_zd.png");
}
catch(Exception e){}
fj_x=getWidth()/2;
fj_y=getHeight()-fj.getHeight();
w_zd=fj_y;
var = new Random();
thread = new Thread(this);
thread.start();
task = new RepeatTask();
repeatTimer = new Timer();
if(zd_x<=0&&zd_x1==0)
{
zd_x=30;
zd_x1=60;
}
}
public void showNotify()
{
repeatTimer.schedule(task,0);
}
public void paint(Graphics g)
{
g.setColor(0xffffff);
g.fillRect(0,0,getWidth(),getHeight());
g.drawImage(fj,fj_x,fj_y,0x10|0x04);
//for(int i=0;i<2;i++)
//{
if(zd_y<=getHeight())
{
g.drawImage(Dj,zd_x,zd_y,0x10|0x04);
g.drawImage(Dj,zd_x1,zd_y,0x10|0x04);
if(zd_yy<getHeight()&&zd_y<fj_y-25)
{
g.drawImage(d_zd,zd_x,zd_yy,0x10|0x04);
g.drawImage(d_zd,zd_x1,zd_yy,0x10|0x04);
zd_yy=(zd_yy+10);
}
else
{
zd_yy=zd_y;
}
zd_y+=3;
}
else
{
zd_x=Math.abs(var.nextInt())%getWidth();
zd_x1=Math.abs(var.nextInt())%getWidth();
if(Math.abs(zd_x-zd_x1)<d_zd.getWidth())
{
if(zd_x>zd_x1)
{
if(zd_x1+30>getWidth())
{
zd_x=zd_x1-30;
}
else
{
zd_x=zd_x1+30;
}
}
else
{
if(zd_x+30>getWidth())
{
zd_x1=zd_x+30;
}
else
{
zd_x1=zd_x-30;
}
}
}
zd_y=0;
}
// }
if(fd==true)
{
g.drawImage(zd,fj_x,w_zd,0x10|0x04);
g.drawImage(zd,fj_x+20,w_zd,0x10|0x04);
w_zd=w_zd-10;
if(w_zd<0)
{
w_zd=fj_y;
fd=false;
}
}
}
public void commandAction(Command c,Displayable d)
{
if(c==cmExit)
{
((KzYx)midlet).exitApp();
}
}
protected void keyRepeated(int keyCode)
{
gameAction=getGameAction(keyCode);
}
protected void keyPressed(int keyCode)
{
gameAction = getGameAction(keyCode);
hasRepeat = true;
}
protected void keyReleased(int keyCode)
{
hasRepeat = false;
}
public void PlayG()
{
switch(gameAction)
{
case LEFT:
if(fj_x>0)
fj_x-=3;
break;
case RIGHT:
if(fj_x<getWidth())
fj_x+=3;
break;
case UP:
if(fj_y>0)
fj_y-=3;
break;
case DOWN:
if(fj_y<getHeight())
fj_y+=3;
break;
case FIRE:
fd=true;
break;
}
repaint();
}
public void run()
{
while(true){
repaint();
try
{
Thread.sleep(10);
}
catch(InterruptedException interruptedexception) { }
}
}
class RepeatTask extends TimerTask
{
public void run()
{
while (true)
{
while (hasRepeat)
{
try
{
PlayG();
Thread.sleep(10);
}
catch (Exception e)
{}
}
}
}
}
}
我写的PAINT的部分乱写的,不多实现了重复按键的。你可以参考一下。我也参考了一位网友的游戏。!希望对你有帮助!
打赏
举报
回复
赞
相关推荐
安卓
按键
模拟
点击相关-Android实现监听
连续
点击事件源码.rar
Android实现监听
连续
点击事件源码.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
安卓
按键
模拟
点击相关-安卓对控件进行
连续
多次单击的监听.rar
安卓对控件进行
连续
多次单击的监听.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
C#
模拟
按键
的一种实现方法
C#
模拟
按键
的一种实现方法 System.Windows.Forms.SendKeys 空格键 = " " 组合键:Ctrl =" ^" 、Shift = "+ "、Alt = “%”
模拟
按键
:A SendKeys.Send("{A}");
模拟
按键
:a SendKeys.Send("{a}");
模拟
组合键:...
java
模拟
简易
按键
精灵
很多小伙伴们都有过抢课的经历... 出于这个目的,我写了一个很简单的抢课程序,类似
按键
精灵,指定坐标,便可以
连续
点击,这样别人退课的时候就可以立刻抢到课, 爽歪歪。 程序的运行效果如下 输入坐标x,...
Android输入系统解析及Native层
模拟
按键
方案
Android输入系统解析及Native层
模拟
按键
方案 目录 1 Android输入系统 1.1 Android Input核心交互 1.1.1 文件节点读写 1.1.2 Framework层抓取事件 1.1.2 节点传输协议 1.2
模拟
按键
方式 1.2.1 Java层方案 ...
利用键盘事件keybd_event(Win32 API)
模拟
键盘
按键
无论云桌面怎么设置,都必须支持接收键盘和鼠标的输入,因此如果可以
模拟
键盘输入,就可以实现发送代码的功能。 Win32API中提供了 keybd_event 函数 Syntax VOID WINAPI keybd_event( _In_ BYTE bVk, _In_
aardio 常用语句整合(8)
按键
模拟
模拟
发送
按键
,字符串,组合键等操作 //键盘管理 import key //发送
按键
,英文符号也会受影响,会受输入法影响 key.send('aardio',100) //发送字符或字符串,所有字符可以发送,不受输入法影响 key.sendString(...
linux
按键
检测结束,linux下
模拟
按键
kbhit(),检测
按键
终止while(1)死循环
主进程中进行循环并且在每次循环中检查循环标志决定是否继续,线程中检测
按键
输入后改变该标志2、主进程中进行
按键
检测,线程用于循环操作,主进程检测到
按键
后关闭循环线程3、在循环中对键盘缓冲区进行扫描,用于...
python手机
按键
脚本教程-Appium+Python-
模拟
手机
按键
操作
一、前言移动端自动化的话,有时需要
模拟
手机
按键
操作,比如手机系统自带的回车、返回等,所以要
模拟
按键
操作得用到 keyevent方法,参数如下:keyevent(keycode, metastate=None)keycode:发送给设备的关键代码,...
模拟
风扇控制系统(
按键
控制)
学习了数码管扫描,
按键
扫描,定时器,中断,三极管,pwm后浅试项目。初始为2分钟倒计时,风速为A,红灯800ms闪烁一次,蓝灯跟随风速不同亮度不同,使用
按键
控制。
按键
k1控制计时,按后停止倒计时,k2k3为加减分钟,...
安卓使用Root权限实现后台
模拟
全局
按键
、触屏事件方法(类似
按键
精灵)
有时我们需要使用安卓实现在后台
模拟
系统
按键
,比如对音量进行调节(
模拟
音量键),关闭前台正在运行的App(
模拟
返回键),或者
模拟
触屏事件。但是对于原生安卓系统而言,后台进程关闭前台进程,甚至
模拟
用户事件,...
安卓java
模拟
器
按键
精灵,安卓
按键
精灵实现后台
安卓使用Root权限实现后台
模拟
全局
按键
、触屏事件方法(类似
按键
精灵)CSDN博客09-09 17:52安卓使用Root权限实现后台
模拟
全局
按键
、触屏事件方法(类似
按键
精灵)有时我们需要使用安卓实现在后台
模拟
系统
按键
,比如对...
用c写
按键
精灵脚本语言,
按键
精灵脚本代码大全
按键
精灵命令使用方法
按键
精灵的鼠标动作录制是一项非常好用的功能,但因为鼠标点击的地方是固定死板的,且延迟时间无法调整,如果在后台脚本中添加一些专用代码,就可以调整点击频率和点击时间,甚至可以在安卓
模拟
器上使用
模拟
按压式...
修正android 处理
连续
按键
两次
1.变量初始化: private boolean isExit = false;...2.
按键
捕捉(比如放在onTouchDown函数中进行
按键
监听 PressHomeKeyCount localHandler = new PressHomeKeyCount(); if(isExit == false ) {
用 win32 API
模拟
按键
发消息倒可以用 PostMessage ,但
模拟
按键
就另当别论了,用 PostMessage 根本不起作用。 后来找到了这篇文章:You can't simulate keyboard input with PostMessage:...
android循环
按键
精灵,大神求解
按键
精灵固定时间循环
话题:大神求解
按键
精灵固定时间循环回答:你既然说自己是小白了,那么我就告诉小白先应该做的事情:首先去看教程,所有初级,中级以及都看了,里面包含基本生成小精灵,
按键
,鼠标,找色找图的方法。全部都掌握了,...
python
模拟
鼠标和键盘
导入pymouse和pykeyboard库,通过PyMouse和PyKeyboard类可以分别实例化鼠标和键盘对象。然后利用类中定义的相应的方法,可以
模拟
鼠标的移动、单击、双击操作,
模拟
键盘的输入、
按键
等操作。
FPGA学习笔记---利用
连续
赋值语句延时功能实现
按键
消抖
延时时间为20ms,用
连续
赋值语句读取
按键
输入口的值,那么当
按键
在20ms内抖动时,输出值不会有变化,只有当
按键
值稳定20ms以上时,输出值才会有变化。这样就是
按键
消抖了吗?说干就干,就先测试一...
大学生上网调查报告4篇.pdf
大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf大学生上网调查报告4篇.pdf
js音乐播放器Demo
js音乐播放器Demo
发帖
J2ME
加入
微信扫一扫
点击复制链接
1.3w+
社区成员
2.6w+
社区内容
Java J2ME
社区管理员
申请成为版主
帖子事件
创建了帖子
2003-12-12 02:58
社区公告
暂无公告