4D星宇

c++

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  57 随笔 :: 0 文章 :: 39 评论 :: 0 Trackbacks

#

这个KEY移动是最傻的,像螃蟹一样!

if (isKeyDown(KEY_KEY_W) || isKeyDown(KEY_UP) && !zooming)
   {
      if (!translating)
         translating = true;
      else
      {
         vector3df movevector = getPosition() - getTarget();
         movevector.Y = 0;
         movevector.normalize();

         setPosition(getPosition() - movevector * translateSpeed);
         setTarget(getTarget() - movevector * translateSpeed);
         updateAbsolutePosition();
      }
   }
   else if (isKeyDown(KEY_KEY_S) || isKeyDown(KEY_DOWN) && !zooming)
   {
      if (!translating)
         translating = true;
      else
      {
         vector3df movevector = getPosition() - getTarget();
         movevector.Y = 0;
         movevector.normalize();

         setPosition(getPosition() + movevector * translateSpeed);
         setTarget(getTarget() + movevector * translateSpeed);
         updateAbsolutePosition();
      }
   }
   else if (isKeyDown(KEY_KEY_A) || isKeyDown(KEY_LEFT) && !zooming)
   {
      if (!translating)
         translating = true;
      else
      {
         vector3df totargetvector = getPosition() - getTarget();
         totargetvector.normalize();
         vector3df crossvector = totargetvector.crossProduct(getUpVector());
         vector3df strafevector = crossvector.normalize();

         setPosition(getPosition() - strafevector * translateSpeed);
         setTarget(getTarget() - strafevector * translateSpeed);
         updateAbsolutePosition();
      }
   }
   else if (isKeyDown(KEY_KEY_D) || isKeyDown(KEY_RIGHT) && !zooming)
   {
      if (!translating)
         translating = true;
      else
      {
         vector3df totargetvector = getPosition() - getTarget();
         totargetvector.normalize();
         vector3df crossvector = totargetvector.crossProduct(getUpVector());
         vector3df strafevector = crossvector.normalize();

         setPosition(getPosition() + strafevector * translateSpeed);
         setTarget(getTarget() + strafevector * translateSpeed);
         updateAbsolutePosition();
      }
   }

posted @ 2008-04-24 15:59 bloodbao 阅读(176) | 评论 (0)编辑 收藏

               wxWidget注意事项
经过N次试验,终于解决了一些事件关联:
1.WXMENU的快捷键有优先级,比如CTRL+N,F1之类,马上关联事件,无需ONKEYDOWN之类。
2.WXPANEL的风格为wxTAB_TRAVERSAL,直接屏蔽一些事件,比如keypresses,LIKE WXK_LEFT之类。
3.使用EVENT.SKIP()传递回一些事件,比如MOUSEMOVE和MOUSEDOWN同时使用的情况。
哎,害得我调了半天的代码,人都傻了!
MARK!
posted @ 2008-04-24 15:34 bloodbao 阅读(159) | 评论 (0)编辑 收藏

posted @ 2008-04-22 17:02 bloodbao 阅读(395) | 评论 (0)编辑 收藏

posted @ 2008-04-22 17:00 bloodbao 阅读(173) | 评论 (0)编辑 收藏

posted @ 2008-04-22 16:39 bloodbao 阅读(149) | 评论 (0)编辑 收藏

posted @ 2008-04-18 19:12 bloodbao 阅读(185) | 评论 (0)编辑 收藏

posted @ 2008-04-18 19:10 bloodbao 阅读(153) | 评论 (0)编辑 收藏

posted @ 2008-04-14 11:00 bloodbao 阅读(239) | 评论 (0)编辑 收藏

posted @ 2008-04-14 10:58 bloodbao 阅读(170) | 评论 (0)编辑 收藏

posted @ 2008-04-14 10:54 bloodbao 阅读(277) | 评论 (0)编辑 收藏

仅列出标题
共6页: 1 2 3 4 5 6