Python之OpenGL笔记(22):箭头控制平面直角坐标系中的圆圈移动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之OpenGL笔记(22):箭头控制平面直角坐标系中的圆圈移动相关的知识,希望对你有一定的参考价值。

参考技术A 1、箭头控制平面直角坐标系中的圆圈上下左右移动;

glfw.set_key_callback(window, on_key) 设置键盘回调函数。
def on_key(window, key, scancode, action, mods):打开键(窗体、键值、扫描码、动作、辅助键)
   参数说明:
   window :发生事件的窗体
   key :激发的键值
   scancode :键值的系统扫描码
   action:动作GLFW_PRESS, GLFW_RELEASE or GLFW_REPEAT.
   mods: 辅助键ALT,CTRL,SHIFT,META

KEY_0 = 48
KEY_1 = 49
KEY_2 = 50
KEY_3 = 51
KEY_4 = 52
KEY_5 = 53
KEY_6 = 54
KEY_7 = 55
KEY_8 = 56
KEY_9 = 57
KEY_A = 65
KEY_APOSTROPHE = 39
KEY_B = 66
KEY_BACKSLASH = 92
KEY_BACKSPACE = 259
KEY_C = 67
KEY_CAPS_LOCK = 280
KEY_COMMA = 44
KEY_D = 68
KEY_DELETE = 261
KEY_DOWN = 264
KEY_E = 69
KEY_END = 269
KEY_ENTER = 257
KEY_EQUAL = 61
KEY_ESCAPE = 256
KEY_F = 70
KEY_F1 = 290
KEY_F10 = 299
KEY_F11 = 300
KEY_F12 = 301
KEY_F13 = 302
KEY_F14 = 303
KEY_F15 = 304
KEY_F16 = 305
KEY_F17 = 306
KEY_F18 = 307
KEY_F19 = 308
KEY_F2 = 291
KEY_F20 = 309
KEY_F21 = 310
KEY_F22 = 311
KEY_F23 = 312
KEY_F24 = 313
KEY_F25 = 314
KEY_F3 = 292
KEY_F4 = 293
KEY_F5 = 294
KEY_F6 = 295
KEY_F7 = 296
KEY_F8 = 297
KEY_F9 = 298
KEY_G = 71
KEY_GRAVE_ACCENT = 96
KEY_H = 72
KEY_HOME = 268
KEY_I = 73
KEY_INSERT = 260
KEY_J = 74
KEY_K = 75
KEY_KP_0 = 320
KEY_KP_1 = 321
KEY_KP_2 = 322
KEY_KP_3 = 323
KEY_KP_4 = 324
KEY_KP_5 = 325
KEY_KP_6 = 326
KEY_KP_7 = 327
KEY_KP_8 = 328
KEY_KP_9 = 329
KEY_KP_ADD = 334
KEY_KP_DECIMAL = 330
KEY_KP_DIVIDE = 331
KEY_KP_ENTER = 335
KEY_KP_EQUAL = 336
KEY_KP_MULTIPLY = 332
KEY_KP_SUBTRACT = 333
KEY_L = 76
KEY_LAST = 348
KEY_LEFT = 263
KEY_LEFT_ALT = 342
KEY_LEFT_BRACKET = 91
KEY_LEFT_CONTROL = 341
KEY_LEFT_SHIFT = 340
KEY_LEFT_SUPER = 343
KEY_M = 77
KEY_MENU = 348
KEY_MINUS = 45
KEY_N = 78
KEY_NUM_LOCK = 282
KEY_O = 79
KEY_P = 80
KEY_PAGE_DOWN = 267
KEY_PAGE_UP = 266
KEY_PAUSE = 284
KEY_PERIOD = 46
KEY_PRINT_SCREEN = 283
KEY_Q = 81
KEY_R = 82
KEY_RIGHT = 262
KEY_RIGHT_ALT = 346
KEY_RIGHT_BRACKET = 93
KEY_RIGHT_CONTROL = 345
KEY_RIGHT_SHIFT = 344
KEY_RIGHT_SUPER = 347
KEY_S = 83
KEY_SCROLL_LOCK = 281
KEY_SEMICOLON = 59
KEY_SLASH = 47
KEY_SPACE = 32
KEY_T = 84
KEY_TAB = 258
KEY_U = 85
KEY_UNKNOWN = -1
KEY_UP = 265
KEY_V = 86
KEY_W = 87
KEY_WORLD_1 = 161
KEY_WORLD_2 = 162
KEY_X = 88
KEY_Y = 89
KEY_Z = 90

ES6学习笔记之箭头函数

箭头函数

ES6 允许使用“箭头”(=>)定义函数。

var f = v => v;
// 等同于
var f = function (v) 
  return v;
;

如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。

var f = () => 5;
var sum = (num1, num2) => num1 + num2;

如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。

var sum = (num1, num2) =>  return num1 + num2; 

由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错。

// 报错
let getTempItem = id =>  id: id, name: "Temp" ;
// 不报错
let getTempItem = id => ( id: id, name: "Temp" );

如果箭头函数只有一行语句,且不需要返回值,可以采用下面的写法,就不用写大括号了。

let fn = () => void doesNotReturn();

this

箭头函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。正是因为它没有this,所以也就不能用作构造函数。

所以,箭头函数转成 ES5 的代码如下。

// ES6
function foo() 
  setTimeout(() => 
    console.log('id:', this.id);
  , 100);

// ES5
function foo() 
  var _this = this;
  setTimeout(function () 
    console.log('id:', _this.id);
  , 100);

除了this,以下三个变量在箭头函数之中也是不存在的,指向外层函数的对应变量:argumentssupernew.target

由于箭头函数使得this从“动态”变成“静态”,下面两个场合不应该使用箭头函数:

第一个场合是定义对象的方法,且该方法内部包括this。

const cat = 
  lives: 9,
  jumps: () => 
    this.lives--;
  

调用cat.jumps()时,如果是普通函数,该方法内部的this指向cat;如果写成上面那样的箭头函数,使得this指向全局对象,因此不会得到预期结果。这是因为对象不构成单独的作用域,导致jumps箭头函数定义时的作用域就是全局作用域。

第二个场合是需要动态this的时候,也不应使用箭头函数。

以上是关于Python之OpenGL笔记(22):箭头控制平面直角坐标系中的圆圈移动的主要内容,如果未能解决你的问题,请参考以下文章

蒋海平机电传动控制第二周学习笔记

ES6学习笔记之箭头函数

ES6学习笔记之箭头函数

python第十四课--排序及自定义函数之案例一:选择排序

VUE学习笔记:25.脚手架vue-cli之箭头函数

OpenGL学习笔记之坐标变换学习