我正在制作一个游戏作为我的单位的一部分,但我不知道这样做的最佳方式,因为我是AS3的新手。我在一个不同的聚会中有8位客人,并且有不同的个性,爱好和兴趣。游戏就像这样,如果你点击一个客人并点击舞台上的任何地方,那么该客人将朝着它移动。如果您单击某个访客,然后单击另一个访客,则您首先单击的访客将移向您单击的访客,当他们关闭时,他们将相互通话。
所有8位客人将在移动方面共享相同的功能和代码。我已完成点击和移动部分,但它是在Guest01课程上完成的,但所有来宾都会有相同的。我应该为每个guest虚拟机创建8个不同的类,还是应该使用数组。我真的不知道如何开始这个。以下是点击和移动的代码:
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.*;
public class Guest01 extends MovieClip
{
var walkSpeed:Number = 5;
var oldPosX;
var oldPosY;
var myGlow:GlowFilter = new GlowFilter();
public function Guest01()
{
addEventListener(MouseEvent.MOUSE_OVER, addGlow);
}
public function addGlow(event:MouseEvent):void
{
filters = [myGlow];
addEventListener(MouseEvent.MOUSE_OUT, removeGlow);
addEventListener(MouseEvent.CLICK, ready);
}
function removeGlow(event:MouseEvent):void
{
filters = [];
}
public function ready(event:MouseEvent):void
{
filters = [myGlow];
stage.addEventListener(MouseEvent.MOUSE_DOWN, walk);
removeEventListener(MouseEvent.MOUSE_OUT, removeGlow);
}
function walk(event:MouseEvent):void
{
oldPosX = parent.mouseX;
oldPosY = parent.mouseY;
rotation = Math.atan2(oldPosY - y,oldPosX - x) / Math.PI * 180;
filters = [];
stage.removeEventListener(MouseEvent.MOUSE_DOWN, walk);
stage.addEventListener(Event.ENTER_FRAME, loop);
}
function loop(event:Event):void
{
var dx:Number = oldPosX - x;
var dy:Number = oldPosY - y;
var distance:Number = Math.sqrt((dx*dx)+(dy*dy));
if (distance<walkSpeed)
{
// if you are near the target, snap to it
x = oldPosX;
y = oldPosY;
removeEventListener(Event.ENTER_FRAME, loop);
}
else
{
x = x+Math.cos(rotation/180*Math.PI)*walkSpeed;
y = y+Math.sin(rotation/180*Math.PI)*walkSpeed;
}
}
}
}
答案 0 :(得分:1)
我已经完成了点击和移动部分,但它是在Guest01类上完成的,但是所有的guest都会有相同的。我应该为每个客人创建8个不同的类,还是应该使用数组。
您不应该为8个不同的Guest创建8个不同的类,但是您应该尝试为不同的Guest重用这些类和方法。
我在一个不同的聚会中有8位客人,并且有不同的个性,爱好和兴趣。
您可能希望创建一个 Guest 类,并将所有属性(个性,爱好等)保留为类中的变量。您必须根据访客选择(或随机)的配置文件在开始时为不同的Guest初始化Class。 Guest的所有方法(如walk,glow等)都是类本身的方法。
希望能给你一些指导。
答案 1 :(得分:0)
试着从另一个帖子回答你的问题。您需要将游戏分解为简单的操作,例如将用户从一个地方移动到另一个地方,如果他们想要移动到另一个用户,计算用户应移动到的偏移位置,计算用于显示用户爱好和兴趣的元素的位置等,
你以前用面向对象语言编程了吗?在开始构建游戏之类的项目之前,您必须牢牢掌握一些功能。根据您的上一篇文章,您的下一个重点应该是以下方法。
由于您已经编写了一个基于用户点击重新定位播放器的功能,您应该编写以下功能:
我正在登机,现在很快就会再次发布