代码一. 关于继承(Inheritance)与覆盖复写(override)
定义一个MyBaseClass的类,该类有一个sayHello的方法
package {
public class MyBaseClass {
public function sayHello():void
{
trace("Hello from MyBaseClass");
}
}
再定义一个MySubClass的子类继承子MyBaseClass父类,并添加一个sayGoodbye()的方法
}
package {
public class MySubClass extends MyBaseClass {
public function sayGoodbye():void {
trace("Goodbye from MySubClass");
}
}
}
然后我们可以在主时间轴第一帧输入:
var base:MyBaseClass = new MyBaseClass();
base.sayHello();
var sub:MySubClass = new MySubClass();
sub.sayHello();
sub.sayGoodbye();
这样该子类不仅继承了父类的方法,还拥有自己的方法!
/////////////////////////////////////////////////////
//复写原有父类的方法
//另外我们可以改写子类内容为,继承自父类,覆盖了父类的sayHello(),并且拥有自己的方法.
package {
public class MySubClass extends MyBaseClass {
override public function sayHello():void {
trace("Hola from MySubClass");
}
public function sayGoodbye():void {
trace("Goodbye from MySubClass");
}
}
}
//需要注意的是.父类的私有(private)方法是不能被覆盖复写的//
//////////////////////////////////////////////////////
代码二.一个影片剪辑/Sprite的子类
package {
import flash.display.Sprite;
public class SpaceShip extends Sprite {
private var speed:Number = 0;
private var damage:Number = 0;
private var fuel:Number = 1000;
public function takeOff():void {
// . . .
}
public function crash():void {
// . . .
}
public function shoot():void {
// . . .
}
public function selfDestruct():void {
// . . .
}
}
}
这样的话我们创建的SpaceShip类不但继承了Sprite显示容器类的公开方法和属性,还定义了自己的属性和方法
//注意:要在一开始的时候导入flash.display类包中的Sprite或者是MovieClip类
//////////////////////////////////////////////////
代码三.创建文档类和第一个ActionScript 3.0应用程序
//创建一个Test文档类,
package {
import flash.display.Sprite;
public class Test extends Sprite {
public function Test() {
init();
}
private function init():void {
graphics.beginFill(0xff0000);
graphics.drawEllipse(100, 100, 100, 100);
graphics.endFill();
}
}
}
然后在主FLA文件进行绑定
//////后面文章大致说的是3种编译AS3.0的方法,包括FLASH CS3IDE & Flex Builder 2 & The free Flex/AS 3 command-line compiler and Flex 2 SDK ,以及怎样使用编译代码的方法,就省略了,过...////////////////
///////再后面说的好象是以帧循环的形式来实现动画效果.大致就是2个关键帧来回刷的意思.略了.//////////////////////////////////////
///////在书32页开始好象讲事件了//////////////////////////
代码四.事件与帧听
///////之前一段说的大致意思就是你可以用字符串"enterFrame"来添加帧听器,也可以用Event.ENTER_FRAME来添加帧听,两者的效果是一样的,因为在Event事件类中已经定义了该公共常量,详细可以查帮助. ////////////
package {
//导入相关类
import flash.display.Sprite;
import flash.events.MouseEvent;
//创建一个EventDemo继承自Sprite
public class EventDemo extends Sprite {
private var eventSprite:Sprite;
public function EventDemo() {
//构造函数执行init();方法
init();
}
private function init():void {
//创建一个显示容器,并显示在舞台
eventSprite = new Sprite();
addChild(eventSprite);
//在里面画东西了
eventSprite.graphics.beginFill(0xff0000);
eventSprite.graphics.drawCircle(0, 0, 100);
eventSprite.graphics.endFill();
//容器居中
eventSprite.x = stage.stageWidth / 2;
eventSprite.y = stage.stageHeight / 2;
//并为该容器添加2个MouseEvent
eventSprite.addEventListener(MouseEvent.MOUSE_DOWN,
onMouseDown);
eventSprite.addEventListener(MouseEvent.MOUSE_UP,
onMouseUp);
}
private function onMouseDown(event:MouseEvent):void {
trace("mouse down");
}
private function onMouseUp(event:MouseEvent):void {
trace("mouse up");
}
}
}
///////////////////////////////////////////////////////////////////////////////////////
代码五.第一个基于AS3.0动画的例子
package {
//导入相关类
import flash.display.Sprite;
import flash.events.Event;
//创建主文档类容器
public class FirstAnimation extends Sprite {
private var ball:Sprite;
public function FirstAnimation() {
//构造函数
init();
}
private function init():void {
//创建实例
ball = new Sprite();
addChild(ball);
//绘制图象
ball.graphics.beginFill(0xff0000);
ball.graphics.drawCircle(0, 0, 40);
ball.graphics.endFill();
//定位
ball.x = 20;
ball.y = stage.stageHeight / 2;
//添加Event.ENTER_FRAME事件帧听
ball.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(event:Event):void {
ball.x++;
}
}
}
//PS:因为这是 Flash Player 更新屏幕的速度。每个显示对象都有 enterFrame 事件,它根据 SWF 文件的帧速率来调度,即每帧一个事件。创建脚本动画的大多数开发人员都使用 enterFrame 事件作为一种方法来创建随时间重复的动作.
/////////////////////////////////////////////////////////////////////////
代码六.显示列表 P38
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
//创建主文档类
public class Reparenting extends Sprite {
//定义3个容器
private var parent1:Sprite;
private var parent2:Sprite;
private var ball:Sprite;
public function Reparenting() {
init();
}
private function init():void {
//第一个父容器
parent1 = new Sprite();
addChild(parent1);
parent1.graphics.lineStyle(1, 0);
parent1.graphics.drawRect(-50, -50, 100, 100);
parent1.x = 60;
parent1.y = 60;
//第二个父容器
parent2 = new Sprite();
addChild(parent2);
parent2.graphics.lineStyle(1, 0);
parent2.graphics.drawRect(-50, -50, 100, 100);
parent2.x = 170;
parent2.y = 60;
//还有一个ball的子容器
ball = new Sprite();
//注意:是在第一个父容器内添加了ball,并显示
parent1.addChild(ball);
ball.graphics.beginFill(0xff0000);
ball.graphics.drawCircle(0, 0, 40);
ball.graphics.endFill();
//为该子容器添加一个CLICK事件
ball.addEventListener(MouseEvent.CLICK, onBallClick);
}
public function onBallClick(event:MouseEvent):void
{
//事件内容是在第二个父容器内添加该自容器
parent2.addChild(ball);
}
}
}
//////////////////////////////////////////////////////////////
代码七.鼠标事件 P43
AS3相关的鼠标事件有:
CLICK DOUBLE_CLICK MOUSE_DOWN MOUSE_MOVE MOUSE_OUT
MOUSE_OVER MOUSE_UP MOUSE_WHEEL ROLL_OUT ROLL_OVER
//////////////////////////////////////////////////
代码:
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
public class MouseEvents extends Sprite {
public function MouseEvents() {
init();
}
private function init():void
{
var sprite:Sprite = new Sprite();
addChild(sprite);
sprite.graphics.beginFill(0xff0000);
sprite.graphics.drawCircle(0, 0, 50);
sprite.graphics.endFill();
sprite.x = stage.stageWidth / 2;
sprite.y = stage.stageHeight / 2;
sprite.addEventListener(MouseEvent.CLICK, onMouseEvent);
sprite.addEventListener(MouseEvent.DOUBLE_CLICK,
onMouseEvent);
sprite.addEventListener(MouseEvent.MOUSE_DOWN,
onMouseEvent);
sprite.addEventListener(MouseEvent.MOUSE_MOVE,
onMouseEvent);
sprite.addEventListener(MouseEvent.MOUSE_OUT,
onMouseEvent);
sprite.addEventListener(MouseEvent.MOUSE_OVER,
onMouseEvent);
sprite.addEventListener(MouseEvent.MOUSE_UP,
onMouseEvent);
sprite.addEventListener(MouseEvent.MOUSE_WHEEL,
onMouseEvent);
sprite.addEventListener(MouseEvent.ROLL_OUT,
onMouseEvent);
sprite.addEventListener(MouseEvent.ROLL_OVER,
onMouseEvent);
}
public function onMouseEvent(event:MouseEvent):void{
trace(event.type);
}
}
}
//以上代码是给这个Sprite注册了10种不同的鼠标事件,并输出事件类型
//后面一段文字又大致讲了一下鼠标点,就是鼠标所在的位置,可以用
//mouseX is 150. mouseY is 250.
//sprite.mouseX is 50. sprite.mouseY is 150.
//前两个是舞台上鼠标的位置,而后者是容器内鼠标相对与容器的位置
//////////////////////////////////////////////////////////////
代码八.键盘事件
//先说了一下大致介绍了一下以前AS2的键盘事件
//大致说了一下AS3的键盘事件就2种KEY_DOWN ,KEY_UP.
//然后好象是说要帧听键盘事件的对象要赋予他焦点stage.focus = sprite;
代码:
package {
import flash.display.Sprite;
import flash.events.KeyboardEvent;
public class KeyboardEvents extends Sprite {
public function KeyboardEvents() {
init();
}
private function init():void {
//给主舞台添加键盘事件帧听
stage.addEventListener(KeyboardEvent.KEY_DOWN,
onKeyboardEvent);
stage.addEventListener(KeyboardEvent.KEY_UP,
onKeyboardEvent);
}
//然后帧听到后输出该事件类型
public function onKeyboardEvent(event:KeyboardEvent):void {
trace(event.type);
}
}
}
更多关于actionscript 3.0宝典的知识可以查询天地会http://bbs.9ria.com/thread-69907-1-1.html