【发布时间】:2014-01-31 13:28:41
【问题描述】:
我有这个想法,将我的班级分成具有特定任务的小班,这样我以后可以更轻松地使用它们。
这是一个要拆分的示例类:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.Stage;
public class m4w extends MovieClip {
public var upPressed:Boolean = false;
public var downPressed:Boolean = false;
public var leftPressed:Boolean = false;
public var rightPressed:Boolean = false;
public var lastMove:String;
public static var spd:Number=6;
public var ttt:MovieClip;
public function m4w(stageRef:Stage, dtct:MovieClip) {
addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey);
stageRef.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed);
stageRef.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed);
ttt=dtct;
}
//Movement
public function fl_MoveInDirectionOfKey(event:Event){
if (leftPressed){
x -= spd;
lastMove="left";
detectPlayer();
if(wlk.currentFrame < 18 || wlk.currentFrame > 24){
wlk.gotoAndPlay(17);
}
}else
if (rightPressed){
x += spd;
lastMove="right";
detectPlayer();
if(wlk.currentFrame < 26 || wlk.currentFrame > 31){
wlk.gotoAndPlay(25);
}
}else
if (upPressed){
y -= spd;
lastMove="up";
detectPlayer();
if(wlk.currentFrame < 10 || wlk.currentFrame > 16){
wlk.gotoAndPlay(9);
}
}else
if (downPressed){
y += spd;
lastMove="down";
detectPlayer();
if(wlk.currentFrame < 2 || wlk.currentFrame > 8){
wlk.gotoAndPlay(1);
}
}
}
public function fl_SetKeyPressed(event:KeyboardEvent):void{
switch (event.keyCode){
case 87:
case 38:{
upPressed = true;
break;
}
case 83:
case 40:{
downPressed = true;
break;
}
case 65:
case 37:{
leftPressed = true;
break;
}
case 68:
case 39:{
rightPressed = true;
break;
}
}
}
public function fl_UnsetKeyPressed(event:KeyboardEvent):void{
switch (event.keyCode){
case 87:
case 38:{
upPressed = false;
break;
}
case 83:
case 40:{
downPressed = false;
break;
}
case 65:
case 37:{
leftPressed = false;
break;
}
case 68:
case 39:{
rightPressed = false;
break;
}
}
}
//Movement
public function detectPlayer(){
if (ttt.hitTestPoint(x, y, true)){
if( lastMove == "right"){
x -= spd;
}
if( lastMove == "left"){
x += spd;
}
if( lastMove == "up"){
y += spd;
}
if( lastMove == "down"){
y -= spd;
}
}
}
}
}
这是一个 pawn 类,具有 3 个任务移动/控制移动图形/碰撞检测。 现在的问题是专业人士将如何做到这一点?或者这是一个好主意?
另外一个问题是,当我将它们分成不同的类时,将它们的功能主义者添加到一个类中的最佳方法是什么?我知道可以使类相互扩展,直到最终类具有所有属性,但我认为这不是最好的方法。
谢谢^_^
【问题讨论】:
标签: actionscript-3 flash class adobe