2013-12-18 19 views
0

即时通讯按下按钮即可从图书馆播放移动图片,而且我已将其与图片链接起来,但仍然无效(这只是一小部分代码有事件侦听器和处理程序到位,角色移动罚款)如何从图书馆播放移动图片,并按下按键

stage.addEventListener(Event.ENTER_FRAME, Move); 
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPress); 
stage.addEventListener(KeyboardEvent.KEY_UP, keyUp); 

var aP:Boolean = false; 
var dP:Boolean = false; 
//creating a new Character_right instance 
var character_right:Character_right = new Character_right(); 

function Move(vet:KeyboardEvent) 
{ 
    if(aP) 
    { 
     char.x -= 5; 
     char.scaleX = -0.55; 
    } 
    if(dP) 
    { 
     char.x += 5; 
     char.scaleX = -0.55; 
    } 
} 

function keyPress(evt:KeyboardEvent) 
{ 
    switch(evt.keyCode) 
    { 
     case Keyboard.A: 
     { 
     aP = true; 
     break; 
     } 
     case Keyboard.D: 
     { 
     dP = true; 
     character_right.play(); 
     break; 
     } 
    } 
} 

function keyUp(evt:KeyboardEvent) 
{ 
     switch(evt.keyCode) 
    { 
     case Keyboard.A: 
     { 
     aP = false; 
     break; 
     } 
     case Keyboard.D: 
     { 
     dP = false; 
     break; 
     } 
    } 
} 
+0

...你正在'Character_right.play()'之前执行'break' ......当然这不起作用。 – Cilan

+0

你想做什么,Character_right是一个电影剪辑?你有错误吗? – Cilan

+0

是的,它是一个movieclip,我有AS链接它,它说以下错误: – Smadygrady

回答

0

检查this post,与有关键盘事件的一个很好的教程中,我相信将是重要的,你理解的概念,并在你的逻辑实现。

简而言之就像下面的例子,但记住要为你的范围实现所有必要的逻辑。

 var isRight:Boolean; 
     var isLeft:Boolean; 
     var isUp:Boolean; 
     var isDown:Boolean; 
     //creating a new Character_right instance 
     var character_right:Character_right = new Character_right(); 

     stage.addEventListener(KeyboardEvent.KEY_DOWN, downKeyHandler, false, 0, true); 
     function downKeyHandler(event:KeyboardEvent):void 
     { 
      if (event.keyCode == Keyboard.RIGHT) 
      { 
       isRight = true; 
      } 
      if (event.keyCode == Keyboard.LEFT) 
      { 
       isLeft = true; 
      } 
      if (event.keyCode == Keyboard.UP) 
      { 
       isUp = true; 
      } 
      if (event.keyCode == Keyboard.DOWN) 
      { 
       isDown = true; 
      } 
     } 

     stage.addEventListener(KeyboardEvent.KEY_UP, upKeyHandler, false, 0, true); 
     function upKeyHandler(event:KeyboardEvent):void 
     { 
      if (event.keyCode == Keyboard.RIGHT) 
      { 
       isRight = false; 
      } 
      if (event.keyCode == Keyboard.LEFT) 
      { 
       isLeft = false; 
      } 
      if (event.keyCode == Keyboard.UP) 
      { 
       isUp = false; 
      } 
      if (event.keyCode == Keyboard.DOWN) 
      { 
       isDown = false; 
      } 
     } 

     stage.addEventListener(Event.ENTER_FRAME, loopHandler, false, 0, true); 
     function loopHandler(event:Event):void 
     { 
      if (isRight) 
      { 
       //do something here… 
            character_right.play(); 
          } 
      if (isLeft) 
      { 
       //do something here... 
      } 
      if (isUp) 
      { 
       //do something here... 
      } 
      if (isDown) 
      { 
       //do something here... 
      } 
     } 
+0

解释'这个职位',不要只发布一个链接... – Cilan

+0

谢谢,我刚刚编辑我的答案。 – gabriel

+0

这并不能真正帮助我解决我的问题,但不适合编辑我的问题,以便您更好地理解它。 – Smadygrady

0

在代码中,你break后执行功能Character_right.play()和休息停止从正在执行的循环代码的休息,所以break之前执行Character_right.play(),例如:

function keyPress(evt:KeyboardEvent) 
{ 
    switch(evt.keyCode) 
    { 
     case Keyboard.A: 
     { 
     aP = true; 

     break; 
     } 
     case Keyboard.D: 
     { 
     dP = true; 
     Character_right.play(); 
     break; 
     } 
    } 
} 
+0

它仍然不起作用 – Smadygrady

+0

对任何读这个答案的人来说:在问题中,break是放在Character_right.play ),他只是编辑了他的问题。 – Cilan