flashCS4中AS3.0文件写下下面这段代码..但是为什么角色不能移动..也没有报错..? 求指导啊..

[复制链接]
查看11 | 回复2 | 2011-4-6 12:36:06 | 显示全部楼层 |阅读模式
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轴向右移动
}
}
}
}
回复

使用道具 举报

千问 | 2011-4-6 12:36:06 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">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);

********************************
这样的结构使你主舞台的代码更简洁,便于拓展程序内容
*/

















<h4 class=\"ask\">追问





<pre class=\"replyask-text\" id=\"content-3633297\">敢问大侠QQ多少?我想请教你..这里太不方便了.还有很多问题.感激不尽
回复

使用道具 举报

千问 | 2011-4-6 12:36:06 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-3633696\">给你发百度信息了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行