flashCS4中AS3.0文件写下下面这段代码..但是为什么角色不能移动..也没有报错..? 求指导啊..
package{importflash.events.KeyboardEvent;importflash.events.Event;importflash.display...
package {
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.Sprite;
public class Move extends Sprite {
var key:Object=new Object();
private var speed:int=20;
private function keyDown(event:KeyboardEvent):void {
key[event.keyCode]=true;
//当按下制订键时,定义相应的key对象为真
}
private function keyUp(event:KeyboardEvent):void {
delete key[event.keyCode];
//案件释放则将相应键的key对象删除
}
private function PMove(event:Event):void {
const Key_LEFT:uint=65;
const Key_RIGHT:uint=66;
//定义左右方向键的键控代码
if (key[Key_LEFT]) {
//如果按下左方向键
P.x-=speed;
//角色沿x轴方向向左移动
}
if (key[Key_RIGHT]) {
//如果按下右方向键
P.x+=speed;
//角色沿x轴向右移动
}
}
}
}
我还没有加之前真的没有加侦听器..
具体要怎么加.加在哪?
private function M(){
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
stage.addEventListener(KeyboardEvent.KEY_UP,keyUp);
stage.addEventListener(Event.ENTER_FRAME,PMove);
}
这样可以吗? 展开
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.Sprite;
public class Move extends Sprite {
var key:Object=new Object();
private var speed:int=20;
private function keyDown(event:KeyboardEvent):void {
key[event.keyCode]=true;
//当按下制订键时,定义相应的key对象为真
}
private function keyUp(event:KeyboardEvent):void {
delete key[event.keyCode];
//案件释放则将相应键的key对象删除
}
private function PMove(event:Event):void {
const Key_LEFT:uint=65;
const Key_RIGHT:uint=66;
//定义左右方向键的键控代码
if (key[Key_LEFT]) {
//如果按下左方向键
P.x-=speed;
//角色沿x轴方向向左移动
}
if (key[Key_RIGHT]) {
//如果按下右方向键
P.x+=speed;
//角色沿x轴向右移动
}
}
}
}
我还没有加之前真的没有加侦听器..
具体要怎么加.加在哪?
private function M(){
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
stage.addEventListener(KeyboardEvent.KEY_UP,keyUp);
stage.addEventListener(Event.ENTER_FRAME,PMove);
}
这样可以吗? 展开
展开全部
package {
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.Sprite;
public class Move extends Sprite {
var key:Object=new Object();
private var speed:int=20;
public function Move(){
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
stage.addEventListener(KeyboardEvent.KEY_UP,keyUp);
stage.addEventListener(Event.ENTER_FRAME,PMove);
}
private function keyDown(event:KeyboardEvent):void {
key[event.keyCode]=true;
//当按下制订键时,定义相应的key对象为真
}
private function keyUp(event:KeyboardEvent):void {
delete key[event.keyCode];
//案件释放则将相应键的key对象删除
}
private function PMove(event:Event):void {
const Key_LEFT:uint=65;
const Key_RIGHT:uint=66;
//定义左右方向键的键控代码
if (key[Key_LEFT]) {
//如果按下左方向键
P.x-=speed;
//角色沿x轴方向向左移动
}
if (key[Key_RIGHT]) {
//如果按下右方向键
P.x+=speed;
//角色沿x轴向右移动
}
}
}
}
/**********************************************************************************************
如楼上所说,你没有侦听事件,这里我把侦听事件加在constructor里面了
这个类是你自己写的吗?奇怪的是,封装得挺好的一个类,这样一来就只适用于移动对象一开始就在舞台上的情形
为什么做成适用舞台的类,而不做成适用元件的类呢?那样重复利用率更高
*/
/****************************************************
以下我修改了一下,使它成为适用元件的类
package {
import flash.events.*;
import flash.display.*;
public class Move extends MovieClip {
var key:Object=new Object();
private var speed:int=20;
private var sta:Stage;
public function Move(s:Stage){
sta = s;
sta.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
sta.addEventListener(KeyboardEvent.KEY_UP,keyUp);
sta.addEventListener(Event.ENTER_FRAME,PMove);
}
private function keyDown(event:KeyboardEvent):void {
key[event.keyCode]=true;
//当按下制订键时,定义相应的key对象为真
}
private function keyUp(event:KeyboardEvent):void {
delete key[event.keyCode];
//案件释放则将相应键的key对象删除
}
private function PMove(event:Event):void {
const Key_LEFT:uint=65;
const Key_RIGHT:uint=66;
//定义左右方向键的键控代码
if (key[Key_LEFT]) {
//如果按下左方向键
this.x-=speed;
//角色沿x轴方向向左移动
}
if (key[Key_RIGHT]) {
//如果按下右方向键
this.x+=speed;
//角色沿x轴向右移动
}
}
}
}
*********************************
使用这个类的时候,在主舞台写
var test:Move = new Move(stage);
addChild(test);
********************************
这样的结构使你主舞台的代码更简洁,便于拓展程序内容
*/
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.Sprite;
public class Move extends Sprite {
var key:Object=new Object();
private var speed:int=20;
public function Move(){
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
stage.addEventListener(KeyboardEvent.KEY_UP,keyUp);
stage.addEventListener(Event.ENTER_FRAME,PMove);
}
private function keyDown(event:KeyboardEvent):void {
key[event.keyCode]=true;
//当按下制订键时,定义相应的key对象为真
}
private function keyUp(event:KeyboardEvent):void {
delete key[event.keyCode];
//案件释放则将相应键的key对象删除
}
private function PMove(event:Event):void {
const Key_LEFT:uint=65;
const Key_RIGHT:uint=66;
//定义左右方向键的键控代码
if (key[Key_LEFT]) {
//如果按下左方向键
P.x-=speed;
//角色沿x轴方向向左移动
}
if (key[Key_RIGHT]) {
//如果按下右方向键
P.x+=speed;
//角色沿x轴向右移动
}
}
}
}
/**********************************************************************************************
如楼上所说,你没有侦听事件,这里我把侦听事件加在constructor里面了
这个类是你自己写的吗?奇怪的是,封装得挺好的一个类,这样一来就只适用于移动对象一开始就在舞台上的情形
为什么做成适用舞台的类,而不做成适用元件的类呢?那样重复利用率更高
*/
/****************************************************
以下我修改了一下,使它成为适用元件的类
package {
import flash.events.*;
import flash.display.*;
public class Move extends MovieClip {
var key:Object=new Object();
private var speed:int=20;
private var sta:Stage;
public function Move(s:Stage){
sta = s;
sta.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
sta.addEventListener(KeyboardEvent.KEY_UP,keyUp);
sta.addEventListener(Event.ENTER_FRAME,PMove);
}
private function keyDown(event:KeyboardEvent):void {
key[event.keyCode]=true;
//当按下制订键时,定义相应的key对象为真
}
private function keyUp(event:KeyboardEvent):void {
delete key[event.keyCode];
//案件释放则将相应键的key对象删除
}
private function PMove(event:Event):void {
const Key_LEFT:uint=65;
const Key_RIGHT:uint=66;
//定义左右方向键的键控代码
if (key[Key_LEFT]) {
//如果按下左方向键
this.x-=speed;
//角色沿x轴方向向左移动
}
if (key[Key_RIGHT]) {
//如果按下右方向键
this.x+=speed;
//角色沿x轴向右移动
}
}
}
}
*********************************
使用这个类的时候,在主舞台写
var test:Move = new Move(stage);
addChild(test);
********************************
这样的结构使你主舞台的代码更简洁,便于拓展程序内容
*/
追问
敢问大侠QQ多少?我想请教你..这里太不方便了.还有很多问题.感激不尽
追答
给你发百度信息了
展开全部
你只是定义了事件处理函数,却没有侦听该事件,当然不会移动,也不会出错了。
加上以下几句:
this.addEventListener(Event.KeyboardEvent,keyDown);
this.addEventListener(Event.KeyboardEvent,keyUp);
并注册PMove事件
加上以下几句:
this.addEventListener(Event.KeyboardEvent,keyDown);
this.addEventListener(Event.KeyboardEvent,keyUp);
并注册PMove事件
参考资料: http://www.bjzero.net
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
奇怪的是你没有监听事件, 还是省略没贴
const Key_LEFT:uint=65;
const Key_RIGHT:uint=66;放到函数外虽然无关要紧
const Key_LEFT:uint=65;
const Key_RIGHT:uint=66;放到函数外虽然无关要紧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询