在ActionScript中,总是当我为一个对象声明一个类时,我使用该类的对象名称和我想要调用的函数。例如,如果对象是Card,则类和函数名称也是Card。
但是在AS游戏编程大学的书中我第一次看到一个与我说的不同的声明课程。
本书的一部分是教授“如何创建匹配游戏”,他们为游戏宣布了两个类。一个主要的课程是关于匹配卡片和我们创建游戏所需的一切。而第二堂课只是为了翻转卡片,只是为了更美丽。在第一个中,我们在第二帧中创建一个新符号来调用类及其函数,名称相同。所以当我们到达第二帧时,符号会调用它的类,然后调用它的函数。并且该帧中的一个显示对象是“卡”。我们需要这些卡片在翻转时翻转,我们不会通过为他们创建movieClip来实现这一点,我们只需要为卡片编写AS即可。你可以在这里看到actionScript:
我的问题是,当函数的名称与对象和类的名称不同时,Flash将选择播放哪个函数? (这是“卡”)
package {
import flash.display.*;
import flash.events.*;
public dynamic class Card extends MovieClip {
private var flipStep:uint;
private var isFlipping:Boolean = false;
private var flipToFrame:uint;
// begin the flip, remember which frame to jump to
public function startFlip(flipToWhichFrame:uint) {
isFlipping = true;
flipStep = 10;
flipToFrame = flipToWhichFrame;
this.addEventListener(Event.ENTER_FRAME, flip);
}
// take 10 steps to flip
public function flip(event:Event) {
flipStep--; // next step
if (flipStep > 5) { // first half of flip
this.scaleX = .2*(flipStep-6);
} else { // second half of flip
this.scaleX = .2*(5-flipStep);
}
// when it is the middle of the flip, go to new frame
if (flipStep == 5) {
gotoAndStop(flipToFrame);
}
// at the end of the flip, stop the animation
if (flipStep == 0) {
this.removeEventListener(Event.ENTER_FRAME, flip);
}
}
}
}
答案 0 :(得分:2)
当您在Actionscript中创建一个类时,您的类有一个称为构造函数的特定函数,它实际上与该类具有相同的名称。
public class MyExample
{
public function MyExample()
{
trace('MyExample constructor!');
}
}
实例化类时,会调用构造函数。
// trace 'MyExample constructor!'
private var ex1:MyExample = new MyExample();
您的类可以使用公共方法,与类构造函数不同,不会自动调用
public class MyExample
{
public function MyExample()
{
trace('MyExample constructor!');
}
public function letsFlipSomeCards():void
{
trace('I like this card game!');
}
}
您需要专门调用它们:
private var ex1:MyExample;
private function init():void
{
ex1 = new MyExample(); // trace 'MyExample constructor!'
ex1.letsFlipSomeCards(); // trace 'I like this card game!'
}
如果您在本网站上搜索关于AS3的优秀教程的一些搜索,您将获得很多关于书籍或视频教程的建议,这些建议可以为您提供良好的语言开端。