2013-12-10 94 views
1

我试图制作一个炸弹捕捉游戏(我实际上是使用AS3教室中的代码来编写一本书的代码)。只要我改变水果这个词在代码中炸弹,我得到了1007错误。除了将basket_mc更改为eod_mc和水果炸弹(我使用了命令F并换成了区分大小写),我没有太大的改变。它与eod_mc一起工作,但不与炸弹。在非构造函数上尝试实例化

var bombArray:Array = new Array(bomb); 
var bombsOnstage:Array = new Array(); 
var bombsCollected:int = 0; 
var bombsLost:int = 0; 
for (var i:int = 0; i<20; i++) { 
var pickBomb = bombArray[int(Math.random() * bombArray.length)]; 
var bomb:MovieClip = new pickBomb(); 
addChild(bomb); 
bomb.x = Math.random() * stage.stageWidth-bomb.width;// bomb.width is subtracted from the random x position to elimate the slight possibility that a clip will be placed offstage on the right. 
bomb.y = Math.random() * -500; 
bomb.speed = Math.random() * 15 + 5; 
bombsOnstage.push(bomb); 
} 
eod_mc.addEventListener(MouseEvent.MOUSE_DOWN, dragEod); 
stage.addEventListener(MouseEvent.MOUSE_UP, dragStop); 
function dragEod(e:Event):void { 
eod_mc.startDrag(); 
} 
function dragStop(e:Event):void { 
eod_mc.stopDrag(); 
} 
stage.addEventListener(Event.ENTER_FRAME, catchBomb); 
function catchBomb(e:Event):void { 
for (var i:int = bombsOnstage.length-1; i > -1; i--) { 
    var currentBomb:MovieClip = bombsOnstage[i]; 
    currentBomb.y += currentBomb.speed; 
    if (currentBomb.y > stage.stageHeight - currentBomb.height) { 
     currentBomb.y = 0 - currentBomb.height; 
     bombsLost++; 
     field2_txt.text = "Total Bombs Detonated: " + bombsLost; 
    } 
    if (currentBomb.hitTestObject(eod_mc)) { 
     bombsCollected++; 
     removeChild(currentBomb); 
     bombsOnstage.splice(i,1); 
     field1_txt.text = "Total Bombs Caught: " + bombsCollected; 
     if (bombsCollected >= 20) { 
      eod_mc.gotoAndStop(20); 
     } else if (bombsCollected > 15) { 
      eod_mc.gotoAndStop(15); 
     } else if (bombsCollected>10) { 
      eod_mc.gotoAndStop(10); 
     } else if (bombsCollected>5) { 
      eod_mc.gotoAndStop(5); 
     } 
    } 
} 
    if (bombsOnstage.length <= 0) { 
    field1_txt.text = "You Win! You have defused the bombs."; 
    field2_txt.text = ""; 
    stage.removeEventListener(Event.ENTER_FRAME, catchBomb); 
} 
if (bombsLost >= 20) { 
    field1_txt.text = "Sorry you lose. You have lost your foot!"; 
    field2_txt.text = ""; 
    stage.removeEventListener(Event.ENTER_FRAME, catchBomb); 
    for (var j:int = bombsOnstage.length-1; j > -1; j--) { 
     currentBomb = bombsOnstage[j]; 
     removeChild(currentBomb); 
     bombsOnstage.splice(j,1); 
    } 
} 

} 
+0

你其实应该花一些时间来学习这个东西实际上做,而不是只是一味地从书本复印... – Sinkingpoint

+0

嗯考虑,我最终是本周到期,我们有一个替代的教学阵列和哦,是的,他们的鞋有角这堂课进入七周。这恰好是我自己无法弄清楚的唯一事情。我希望得到一些帮助。 – DollahBill

+0

你有没有叫'pickBomb'的课?你正试图创建一个实例(它调用它的*构造函数*)我怀疑这是你的错误来自哪里。 – Sinkingpoint

回答

0

可能避免使你的编程生活更扭曲比现在...

有编程对象和类,一类一组对象的描述,说“表“(或者,因为类和变量的名称最好不同,”表“,首字母大写)是一个类的名称。 实例对象是属于一个或多个类别的结构,其中Object是最顶层的,因为编程中的所有内容都是对象或“简单变量”,即数字,真/假,一串字符(这些也是AS3中的对象类型,尽管如此,Number,Boolean,String,但这些通常不需要通过new实例化)或者可能是其他一些我现在不记得的简单类型。

类有属性方法。属性是可以从类的任何对象请求的东西,比如表格的“高度”。属性可以是任何类型的,包括嵌套对象,取决于你的基类是什么。在AS3中说stage是任何DisplayObject的属性,用于在运行时获取唯一的Stage对象[1]。方法是一个类的任何对象都可以被告知要做的事情。比方说,炸弹落下,爆炸,MovieClip s可以告诉stop()等。你写类代码要记住,这个类的所有对象必须像你写的一样行为,但是因为它们可以在属性上有所不同,你可以给他们有条件的行为。例如,如果炸弹已经爆炸,它不会再炸毁。

A 变量,无论属性还是独立变量(如果在函数中声明一个变量)都是对给定类型对象的引用。说var i:int是指某种整数。简单类型变量是容器,即i=2;将在引用的整数中放置2,i=j;将从j中将值复制到i,而var theStage:Stage=this.stage将改为创建对现有对象的引用,并且如果该对象将更改,该引用将为您提供更改的对象,而不是其先前的状态。一个数组是变量的集合,可以通过索引访问,在AS3中,它们不必是一种类型,而Vector是一个类型化数组。

接下来,对象的生命周期。一个对象只在有活动引用时才存在,无论是在另一个活动对象的属性中,还是在可见变量中,或者在事件侦听器(特定于AS3)中。一个对象是通过new ClassName(<parameters>)创建的,当你以某种方式到达它时就会生存,并且一旦没有活动链接并且Flash Player决定运行垃圾收集器就会被销毁。在此之前,程序员必须自己释放对象,可以在BitmapData.dispose()处看到雏形。因此,为了避免Flash播放器耗尽可用内存,请全权控制链接的创建和销毁。你不需要关心简单的变量,他们正在被Flash播放器照顾。

一种互动很多的基本功能已经在AS3中实现,寻找他们和他们Adobe's manual是如何工作的例子,通过左下角的包浏览,大多数的交互式的东西是flash.display包,请参阅其他包装是必要的。

希望这会带给你一些洞察到编程基础。

[1]:有一个阶段,除非你正在做一个SWF的负荷,那么可能会有更多,每一个SWF一个舞台。

+0

谢谢。课程名称是Flash,我没有意识到(直到课程的第一个晚上)才有了编程逻辑的预先需求。我的顾问向我询问了这个课程,显然她也把它放在了预备课程上。这甚至不是我学位的一部分,我将参加图形/网页设计,这是游戏设计学位的一部分。因此,FML参加我不需要的课程并且没有做好准备。直到我还在练习这个小呃逆时,教练才意识到我在八球后面,并且得到了巨大的帮助。感谢您在基础编程知识方面的额外努力。 – DollahBill

+0

请看,编程逻辑不仅仅是获得学位,还需要它在日常生活中的应用,只是更仔细地观察。是的,即使你做了最好的设计,它也不会自己开始游戏,你需要逻辑来动画它,至少它的基础知识。 – Vesper

相关问题