精华内容
下载资源
问答
  • 方向键控制窗体移动
    2022-02-13 23:32:37

    HTML部分和css部分没有什么需要说的,只需要一个承载图片的img标签即可,给图片设置fixed定位即可(不一定必须得是fixed,只要是能改变位置的即可),另外需要准备四张图片,分别是坦克四个朝向的图片

    <img src="imgs/tankU.gif" alt="" id="myTank">
            img {
                position: fixed;
                left: 500px;
                top: 400px;
            }

    js部分(核心代码,思路为判断键盘按下的键,控制图片的src和位置,也可以不改变src,控制图片旋转也行)

            let tank = document.getElementById("myTank");
            // 获取浏览器可视区域的宽高
            let bigHei = window.innerHeight;
            let bigWid = window.innerWidth;
    
            //键盘keyCode码---W:87   S:83   A:65    D:68
            document.onkeydown = function (e) {
                // 坦克每上下左右移动时,增加或减少5px的偏移量,得到一个新的坐标
    
                //坦克上移
                if (e.keyCode == "87") {
                    tank.src = "./imgs/tankU.gif";
                    if (tank.offsetTop >= 0) {
                        tank.style.top = tank.offsetTop - 5 + "px";
                    }
                }
    
                //坦克下移
                else if (e.keyCode == "83") {
                    tank.src = "./imgs/tankD.gif";
                    if (tank.offsetTop <= bigHei) {
                        tank.style.top = tank.offsetTop + 5 + "px";
                    }
                }
    
                //坦克左移
                else if (e.keyCode == "65") {
                    tank.src = "./imgs/tankL.gif";
                    if (tank.offsetLeft >= 0) {
                        tank.style.left = tank.offsetLeft - 5 + "px";
                    }
                }
    
                //坦克右移
                else if (e.keyCode == "68") {
                    tank.src = "./imgs/tankR.gif";
                    if (tank.offsetLeft <= bigWid) {
                        tank.style.left = tank.offsetLeft + 5 + "px";
                    }
                }
    
            }

    更多相关内容
  • 摘要:C#源码,菜单窗体,窗体移动 C#窗体移动示例,用键盘上的方向键控制窗体的移动,上、下、左、右键各控制窗体移动的方向,其实平时用的这种功能的不多,为了学习C#的目的,特将此源码发上来让新手们参考。
  • 第二要能通过控制方向键控制它的移动 第一部分的实现 1.首先要画一个大窗体 public class BallMove extends JFrame 在开发Java应用程序时,通常情况下利用JFrame创建大窗口。利用JFrame创建的窗口分别包含一...

    需求分析:

    第一 要画出一个小球

    第二 要能通过控制方向键控制它的移动

    第一部分的实现

    1.首先要画一个大窗体  

    public class BallMove extends JFrame

    在开发Java应用程序时,通常情况下利用JFrame创建大窗口。利用JFrame创建的窗口分别包含一个标题、最小化按钮、最大化按钮和关闭按钮

    用主类去继承JFrame类就可以使用它的方法啦 

    2.接着用一个类来继承JPanel 如果说JFrame是一个窗口 JPanel就相当于一个画板 我们可以在上面添加不同的按钮  文字等元素  

    class MyPanel extends JPanel

    3.接下来我们就可以在画板上画画啦

        int x = 10;
        int y = 10;
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            g.fillOval(x,y,20,20);
        }

    利用JPanel中的方法paint 可以画出小球  Graphics相当于一支画笔  它有许多的方法 比如画圆 画矩形 我们画了一个半径为20像素点的小球 在距离x轴y轴各10个像素点的地方

    4.此时小球已经画好了 我们只需要在主方法中调用就可以

    首先定义一个MyPanel的对象

    MyPanel myPanel = null;
     myPanel = new MyPanel();//面板

    然后利用构造函数将它add添加进入JFrame大框架 

    this.add(myPanel);

    设置框架的大小

     this.setSize(400,300);

     关闭按钮的设置

     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    显示设置

    this.setVisible(true);

    源码在下面 这样我们就可以得到一个小球 但是它此时还是不会动哈哈嘎

    没关系马上让它动起来!

    第二部分的实现

    class MyPanel extends JPanel implements KeyListener

    1.首先要实现KeyListener接口   KeyListener可以捕捉键盘的输入并返回输入的信息

    2.其中有一个方法我们必须实现

    public void keyPressed(KeyEvent e)

    也就是当按钮按下时的方法

    3.方法体中的内容

     if(e.getKeyCode()==KeyEvent.VK_DOWN){//向下的键
                y++;
            }
            //让面板重绘
    
             else if(e.getKeyCode()==KeyEvent.VK_UP){//向下的键
                y--;
            }
            //让面板重绘
    
          else if(e.getKeyCode()==KeyEvent.VK_LEFT){//向下的键
                x--;
            }
          else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
              x++;
            }

    这个很好理解 就是操控小球的x y坐标 从而进行移动

    4.别忘记要重绘

    相当于刷新页面

      this.repaint();

    好的 关于本次小游戏就给大家分享到这里了  你也可以给自己的小球涂上颜色 或者加快速度都可以的  希望大家多多三连支持哦   源码如下 大家可以先玩一玩 再去做  学编程的过程可能并没有那么好玩 往往是枯燥的  甚至会让人丧失信心 但请相信 你一定可以的 每个高手都是从菜鸡走过来的 他们厉害只是因为接触的时间长罢了   共勉!

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    
    /**
     * @author shijiu
     */
    //演示小球通过键盘控制上下左右的移动》java事件控制
    public class BallMove extends JFrame{//框架
        MyPanel myPanel = null;
        public static void main(String[] args) {
            BallMove ballMove = new BallMove();
        }
        public BallMove(){
            myPanel = new MyPanel();//面板
            this.add(myPanel);
            this.setSize(400,300);
            this.addKeyListener(myPanel);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
    }
    //KeyListener 是监听器  可以监听键盘事件
    class MyPanel extends JPanel implements KeyListener {
       //为了小球可以移动 赋个变量
        int x = 10;
        int y = 10;
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            g.fillOval(x,y,20,20);
        }
    
            //有字符输出时 该方法就会触发
        @Override
        public void keyTyped(KeyEvent e) {
    
        }
    
        //当某个键按下时 该方法会触发
        @Override
        public void keyPressed(KeyEvent e) {
            System.out.println((char)e.getKeyCode()+"被按下去");
            //根据用户按下的不同键  来处理小球的移动(上下左右)
            //在java中 会给每一个键 分配一个值
            if(e.getKeyCode()==KeyEvent.VK_DOWN){//向下的键
                y++;
            }
            //让面板重绘
    
             else if(e.getKeyCode()==KeyEvent.VK_UP){//向下的键
                y--;
            }
            //让面板重绘
    
          else if(e.getKeyCode()==KeyEvent.VK_LEFT){//向下的键
                x--;
            }
          else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
              x++;
            }
            //让面板重绘
            this.repaint();
        }
    
        //当某个键释放了(松开) 该方法会触发
        @Override
        public void keyReleased(KeyEvent e) {
    
        }
    }

    展开全文
  • winform窗体的键盘基本控制 1.简单介绍 1.1 KeyPreview属性 确定窗体上控件的键盘事件是否已向窗体注册 如果我们将窗体的KeyPreview的属性值设置为True,那么窗体将会比其内部的控件有限获得键盘事件的激活权! &...

    winform窗体的键盘基本控制

    1.简单介绍

    1.1 KeyPreview属性

    • 确定窗体上控件的键盘事件是否已向窗体注册
    • 如果我们将窗体的KeyPreview的属性值设置为True,那么窗体将会比其内部的控件优先获得键盘事件的激活权!
          例如当我们的窗体之中有着button按钮,当你设置了键盘事件,例如KeyDown事件,但是同时你也设置了窗体的KeyDown事件,那么在你按下按键的时候,键盘事件会响应button按钮对应的键盘事件,而不会响应窗体设置的KeyDown事件。但是如果此时你设置了KeyPreview属性值为True。此时再次按下按键,则会优先响应窗体的键盘事件,再会响应按钮的键盘事件!
    • 示例
    private: System::Void FrmMain_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    		if (e->KeyData == Keys::W) {
    			MessageBox::Show("窗体");
    		}
    }
    private: System::Void btn_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    	if (e->KeyData == Keys::W) {
    		MessageBox::Show("按钮");
    	}
    }
    

    若设置了KeyPreview属性值为True,则会先弹出“窗体”!再弹出“按钮”!
    KeyPreview属性值为False,则只会弹出“按钮”。

    1.2 KeyDown事件、KeyPress事件以及KeyUp事件

    1.2.1 简单介绍

    • 根据MSDN所讲述,三者之间触发的顺序依次是:KeyDown>KeyPress>KeyUp.
      (虽然触发的顺序KeyDown,但是响应的顺序KeyDown迟于KeyPress。)
    • 区别: 其中KeyDownKeyPress事件一样,都是按键按下之后先后发生,但是KeyUp与其不同,是在按键释放的时候发生!!

    1.2.2 KeyDown事件

    • 当键盘按下即触发事件
    • 示例
    private: System::Void FrmMain_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    		if (e->KeyData == Keys::W) {
    			MessageBox::Show("down");
    		}	
    	}
    

    (记住,这是窗体的的键盘事件,应该先将KeyPreview设置为True。)
    按下键盘上的W即会触发!弹出“down”。

    1.2.3 KeyPress事件

    • 当键盘按下即触发事件
    • 示例
    private: System::Void FrmMain_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
    		if (e->KeyChar =='w') {
    			MessageBox::Show("press");
    		}
    	}
    

    (记住,这是窗体的的键盘事件,应该先将KeyPreview设置为True。)
    按下键盘上的W即会触发!弹出“press”。

    • 另一种示例
    private: System::Void FrmMain_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
      	if (e->KeyChar <= 100) {
      		MessageBox::Show("press");
      	}
      }
    

    当按下键,键的ASCII的值不大于100的时候都会触发事件,并且区分大小写!

    1.2.4 KeyUp事件

    • 当键盘释放的时候,触发该事件
    • 示例
    private: System::Void FrmMain_KeyUp(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    		if (e->KeyData == Keys::W) {
    			MessageBox::Show("up");
    		}
    	}
    

    当释放按键w的时候,会弹出“up”。

    2.主要区别

    1. KeyPress主要用于捕获数字(注意:包括shift+数字的符号)、字母(包括大小写)、小键盘等,除了F1-12SHIFTAltCtrlInsertHomePgUpDeleteEndPgDnScrollLockPauseNumLock、菜单键、开始键和方向键外的ANSI字符
    2. KeyDownKeyUp通常可以捕获键盘除了PrScrn所有按键。(不包括特殊键盘的特殊键,比如机械键盘的宏定义键盘
    3. KeyPress只能够捕获单个字符。
    4. KeyDownKeyUp 可以捕获组合键。
    5. KeyPress 可以捕获单个字符的大小写。
    6. KeyDownKeyUp 对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写。
    7. KeyPress 不区分小键盘和主键盘的数字字符。
    8. KeyDownKeyUp 区分小键盘和主键盘的数字字符。
    9. 其中PrScrn 按键KeyPressKeyDownKeyUp 都不能捕获。

    3.注意

    • 触发KeyDown后,不一定触发KeyUp事件,因为当你触发KeyDown事件的时候,你移动鼠标,或者按其他的键时候,KeyUp事件则不会被触发!
    private: System::Void FrmMain_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    		if (e->KeyData == Keys::W) {
    			down++;
    			MessageBox::Show("down");
    		}	
    	}
    private: System::Void FrmMain_KeyUp(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    	if (e->KeyData == Keys::W) {
    		up++;
    		MessageBox::Show("up");
    	}
    }
    

    此时若你按住了w键,会弹出“down”,但是此时你释放了w键,再次按住回车键,将弹框关闭,则不会再次触发keyUp事件了。但是,按住了w键,关闭了弹窗,再释放w键,此时会触发KeyUp事件,弹出“up”。

    • KeyDown与KeyPress的触发
    private: System::Void FrmMain_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    		if (e->KeyData == Keys::W) {
    			MessageBox::Show("down");
    		}	
    	}
    private: System::Void FrmMain_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
    		if (e->KeyChar == 'w') {
    			MessageBox::Show("press");
    		}
    	}
    

    KeyPress的触发在KeyDown之后,但是响应确是KeyPress在前。
    当你按下w键(此时需要为小写,因为KeyPress识别大小写。)会先弹出"press",再弹出"down"。

    展开全文
  • 功能:用键盘操作无边框窗体移动并关闭。 环境:delphi7+winxp3 通过测试 完成时间:18:09 2011-3-7 } unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, ...

     

    运行结果截图:

     

     

    展开全文
  • 这是移动接收板小游戏,是我用C#编写的一个窗体应用程序WindowsFormsApplication,程序简介:左右方向键控制最下方接收板的移动方向,上方会随机下落各种物品,接收板触碰到不同物品分别会产生不同作用,这些物品...
  • } /// /// 重写ProcessDialogKey,来允许监听方向键 /// /// /// protected override bool ProcessDialogKey(Keys keycode) { switch (keycode) { case Keys.Left: case Keys.Up: case Keys.Right: case Keys.Down:...
  • '========================================================================================= ...'-功能描述: 在连续窗体视图中使用上下箭头在记录中上下移动 '-输入参数: 参数1:KeyCode 键值代码...
  • //设置四个布尔变量:上下左右方向键。组合起来有八种方向 private boolean isUp = false; private boolean isDown=false; private boolean isLeft=false; private boolean isRight=false; //自定义移动猪的...
  • C# Winform窗体中添加鼠标滚轮事件鼠标滚轮的方向判断 如图所示,在控件中没有直接的鼠标滚轮事件,需要我们进行手动添加。 下面以自定义控件MapComponent为例进行说明: 添加鼠标滚轮事件: this.MouseWheel += ...
  • 视口界面中移动视角
  • 实现移动 6.1 mian.py添加刷新率属性 6.2将刷新率应用到各项,并角色添加移动方法 6.3添加方向向量 ![在这里插入图片描述](https://img-blog.csdnimg.cn/789886242cde4db3893e348de42dac92.png 6.4实现移动方法 6.5...
  • 图片动态移动

    2012-01-13 14:09:49
    实现图片动态移动,在整个屏幕中按照一定的方向动态移动
  • MFC 窗体大小控制

    千次阅读 2017-08-31 15:37:15
    删除) 2 、保存后退出项目,到文件夹中删除实际的 .h 和 .cpp 文件; 3 、删除 .clw 文件; 4 、重新进入项目,进行全部重建( rebuild all )。 如何建立一个新类?     从 “ 插入 ”(Insert)...
  • 主要是储备一些知识,防备以后用的时候...使用C#模拟键盘输入、鼠标移动和点击、设置光标位置及控制应用程序的显示 https://www.cnblogs.com/makesense/p/6215732.html C# 系统应用之鼠标模拟技术及自动操作鼠标 ...
  • C++窗体程序设计(一)窗体类WNDCLASSEX

    万次阅读 多人点赞 2019-12-06 17:13:53
    其中前缀CS表示class type,HREDRAW代表当宽度(H代表水平方向Horizontal)发生改变时进行重绘(Redraw),VREDRAW代表着当高度(V代表垂直方向Vertical)方向发生变化时进行重绘。 除此之外,style还可以设置其他...
  • win32api.SendMessage(PCB_handle, win32con.WM_COMMAND, 0x90000, CB_handle)#CBN_SELCHANGE当用户更改了列表项的选择时发送,不论用户是通过鼠标选择或是通过方向键选择都会发送此通知。LOWORD为组合框的ID. ...
  • 创建用户界面时,把控件从工具箱拖放到窗体上,把它们放在应用程序运行时需要的地方,再双击该空间,添加空间的处理程序。 1.2 WINDFORM windform是windows Forms的缩写,是一种只能客户端技术 用于创建传统的基于...
  • 首先包含键盘事件头文件 #include <... //在窗体上为lineEdit安装事件过滤器 ui->lineEdit_LedNumber->installEventFilter(this); ui->lineEdit_LedSwitch->installEventFilter(th
  • 方法一:protected override void OnKeyUp(System.Windows.Forms.KeyEventArgs e) { base.OnKeyUp(e); if (e.KeyCode == System.Windows.Forms.Keys.Enter) { e...
  • 使用键盘监听器来控制图片的移动:        1,创建一个窗体, 重写这个paint()方法来绘制图片和窗体,刷新  preson.draw();  如果电脑配置不是很好就只要刷新JPanel就可以了, 不用刷新JFrame(JFrame比较...
  • Canvas上的物体用 bind_all(键值,事件函数(event)) 绑定后,就可用move(物体的id,横向移动坐标,纵向移动坐标) 来移动物体了。以下代码模拟了推箱子小游戏中箱子移动的动作,仅限制了边界暂没有添加其它箱子和砖墙等...
  • 知识点:控件排列和对齐的方法、创建MDI窗体的方法、高级控件(工具条ToolStrip、状态条StatusStrip、图片框PictureBox、图片列表ImageList、定时器Timer)的使用、数据验证代码的编写、窗体间数据传递的方法 ...
  • winform窗体控件

    2020-04-22 13:56:25
    1、窗体(Form) 2、Label (标签)控件 3、TextBox(文本框)控件 4、RichTextBox控件 5、NumericUpDown控件 6、Button(按钮)控件 7、GroupBox(分组框)控件 8、RadioButton(单选按钮)控件 9、CheckBox...
  • 我的解决思路是 : 加上对按键松开后的判断 当d松开and a按下时向左移动, 但是这只能解决左右方向上的,不能解决 上左,下左 ,等等 方向上的 , 用这个方法解决的话写的代码太多, 太繁琐 有没有大神有简单的方法...
  • 因为.net有自带处理的键盘上下左右按键事件,即可以移动控件焦点,所以导致我们想使用上下左右按键触发KeyDown是不可用的。 为此只需要重写ProcessDialogKey事件即可:...//是上下方向键则不处理,交给KeyDown事件 ret
  • MFC按键控制

    千次阅读 2015-08-11 22:01:39
    实现MFC下按键控制;参考:http://blog.csdn.net/mjk1133/article/details/6704694  http://blog.csdn.net/iamoyjj/article/details/6612584 工程中CPP代码 // MoveDlg.cpp : implementation file // #include ...
  • C++ 模拟鼠标键盘操作

    千次阅读 2022-07-30 18:13:59
    当用户在键盘上键入时,具有键盘焦点的窗口的窗口过程接收击消息。击消息是WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN和WM_SYSKEYUP。典型的窗口过程会忽略除WM_KEYDOWN之外的所有击消息。当用户按下某个时,系统...
  • 这几天都在忙着写一个老板提出的傻逼功能,大致说说需求,就是要用用Ios的虚拟按键去控制PC的角色移动,如果是Unity来制作这个功能并不难弄,因为这个只需要通过网络层来传递控制信号,然后PC端进行响应即可。...
  • 调整工具栏、菜单和任务窗格的大小并移动它们按 Alt 可选取菜单栏 (菜单栏:标题栏下面包含菜单名称的水平栏。菜单栏可以是内置菜单栏,也可以是自定义菜单栏。)。反复按 Ctrl+Tab 可选取所需的工具栏 (工具栏:包含...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,424
精华内容 4,169
热门标签
关键字:

方向键控制窗体移动