我有这个捕手游戏,苏打瓶落在舞台上,我们用一个角色来捕捉它。但是所有的actionscript都内置在文件中。但我被要求将我使用的两个类(光标和下降的汽水瓶)放在外部类文件中。
既然我是OOP的新手,我真的不明白怎么做。那么,如何将类的内部动作脚本移动到外部动作脚本文件中?
感谢先进,考虑提供帮助:p
如果有帮助的话代码如下。
var koyupo:Koyupo;
var createsodaID:uint;
var gamespeed:uint;
var score:uint=0;
function startGame () :void {
// create the character as a cursor
koyupo= new Koyupo();
koyupo.x=200;
koyupo.y=270;
addChild(koyupo);
// listens for a mouse move event to move the koyupo
stage.addEventListener(MouseEvent.MOUSE_MOVE, movekoyupo);
Mouse.hide();
gamespeed=500;
createsodaID=setInterval (createsoda, gamespeed);
//setting the ammount displayed on screen to be 0
droppedtext.text=caughttext.text='0';
}
function movekoyupo (e:MouseEvent) :void{
// move koyupo according to the mouse movement
koyupo.x=this.mouseX;
e.updateAfterEvent ();
}
function getRandomNumber ( low:Number , high:Number):Number
{
var randomNumber:Number = Math.random()*(high-low) +low;
return randomNumber;
}
function createsoda () :void {
//creating falling soda bottles
var soda:Soda= new Soda ();
soda.y=-50;
trace(getRandomNumber(50,900));
soda.x=getRandomNumber(100 , 500);
soda.addEventListener(Event.ENTER_FRAME, dropsoda);
addChild(soda);
}
function dropsoda (e:Event):void{
var mc:Soda=Soda(e.target);
mc.y+=10;
if(mc.hitTestObject (koyupo)){
caught (mc);
}else if (mc.y>stage.stageHeight) {
dropped (mc);
}
}
function caught (mc:Soda):void{
mc.removeEventListener(Event.ENTER_FRAME,dropsoda);
removeChild(mc);
caughttext.text=String(Number(caughttext.text)+1);
if(caughttext.text=='35'){
proceed();
}
}
function dropped (mc:Soda):void{
mc.removeEventListener(Event.ENTER_FRAME,dropsoda);
removeChild(mc);
droppedtext.text=String(Number(droppedtext.text)+1);
if(droppedtext.text=='5'){
gameOver();
}
}
function gameOver() :void{
score=Number(caughttext.text);
stage.removeEventListener(MouseEvent.MOUSE_MOVE,movekoyupo);
removeChild(koyupo);
clearInterval(createsodaID);
removeChild(caughttext);
removeChild(droppedtext);
while(numChildren>0) {
getChildAt (0) .removeEventListener(Event.ENTER_FRAME, dropsoda);
removeChildAt(0);
}
Mouse.show();
gotoAndStop('gameover');
}
function proceed() :void{
score=Number(caughttext.text);
stage.removeEventListener(MouseEvent.MOUSE_MOVE,movekoyupo);
removeChild(koyupo);
clearInterval(createsodaID);
removeChild(caughttext);
removeChild(droppedtext);
while(numChildren>0) {
getChildAt (0) .removeEventListener(Event.ENTER_FRAME, dropsoda);
removeChildAt(0);
}
Mouse.show();
gotoAndStop('win');
}
startGame();
答案 0 :(得分:0)
通过使用“文档类”(C / C ++中的某种主要功能)将flash IDE与外部类集成,即当flash IDE查找类设置为文档类&称其为Constructor&输入框架处理程序。
package classes
{
public class startGame extends MovieClip
{
// Class variables can be declared here
// Constructor of the document class
function startGame () :void {
// Function to handle Updates as per frame rate
addEventListener(Event.ENTER_FRAME,enterFrameHandler);
}
}
}
以上可能没有给你任何有用的东西。但我试图让您了解代码应该如何移动。它就像
一样简单我知道如果你完全使用OOP& amp; AS3第一次在一起,但由于它是一个非常广泛的话题,除了真正的练习和选择之外别无选择。至少学习OOP概念。因为我怀疑无论是谁(你的客户或老师)要求你使用课程,都会满足于上述内容。
答案 1 :(得分:0)
当你第一次开始做OOP时,你可能想尝试这个我编写的脚本,将时间轴代码转换为文档类。
它并不完美,但效果很好,只需将时间轴代码粘贴到textarea中,并为该类命名为Main。然后它将为您生成一个doc类。
获取新代码并将其复制到名为Main.as的文件中。然后从fla中删除旧的时间轴代码。接下来,单击舞台上的某个位置,然后在“发布”下的属性窗口中,您将看到一个名为“类”的输入字段,在输入字段中输入Main并测试您的电影。确保将Main.as保存在fla文件旁边。
您可以将原始时间轴代码与新文档类进行比较,以便开始了解您想要编写类时所需的内容。这真的只是冰山一角。围绕OOP和设计模式进行包装需要时间,但是一旦你做了它的价值。