麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 辦公 > Flash > 正文

Flash編寫類及外部as文件的方式

2020-07-17 13:17:54
字體:
供稿:網(wǎng)友
我們已經(jīng)了解到了在flash 9中如可在時間線上編寫代碼,如何將現(xiàn)有的時間線上的代碼轉(zhuǎn)換為外部類.以及flash9的Document Class形式,接下來我們要更細(xì)一步的來研究編寫類及外部as文件的方式.
include
如果你之前了解As1.0,As2.0編程,那么對include一定不陌生,在Actionscript 3.0中我們?nèi)钥梢允褂胕nclude 來導(dǎo)入代碼.
如下的例子:

1.打開flash新建一個文檔,保存為drag_inclue.fla在場景中創(chuàng)建一個movieclip,本例中使用的圓球,將其轉(zhuǎn)換為影片剪輯,并在場景中將其命名為circle_mc. 不需要在庫中設(shè)置鏈接屬性.
2.新增一層,按下F9打開Actionscript面板,在其中輸入代碼如下:
代碼:

//設(shè)置當(dāng)光標(biāo)移到circle_mc上時顯示手形
circle_mc.buttonMode = true;
// 偵聽事件
circle_mc.addEventListener(MouseEvent.CLICK,onClick);
circle_mc.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
circle_mc.addEventListener(MouseEvent.MOUSE_UP,onUp);
//定義onClick事件
function onClick(event:MouseEvent):void{
trace("circle clicked");
}
//定義onDown事件
function onDown(event:MouseEvent):void{
circle_mc.startDrag();
}
function onUp(event:MouseEvent):void{
circle_mc.stopDrag();
}

3.將此幀上的代碼全部選中,按下ctrl x剪切掉,選擇flash的new菜單,新建一個Actionscript文件,在剛剪切掉的代碼貼上.保存名為drag_include.as.與drag_include.fla在同一路徑下.
4.回到drag_include.fla中,在第一幀上輸入如下代碼:
include "drag_include.as"
測試影片即可以看到與時間線上測試時相同的結(jié)果了.此種方式,在As1.0時經(jīng)常使用.如果你仍習(xí)慣這種方式,在Actionscript 3.0中仍可以使用.
元件類(symbol class)
這里所說的元件件類,實際是指為flash影片中的元件指定一個鏈接類名.它與上面的include 的不同之處于,它使用的是嚴(yán)格的類結(jié)構(gòu).而不是我們習(xí)慣上的時間線編寫方式.我們要將小圓球的拖動功能封裝起來,這樣不論你創(chuàng)建多少可以拖動的小球,都會變得很輕松,只需要創(chuàng)建它的實例并顯示出來即可。
我們?nèi)允褂蒙侠齺碚f明問題.打開drag_include.fla文件,將其另存為Symbol_class.fla文件,新建一個Actionscript文件,將其保存為Symbol_class.as文件,與Symbol_class.fla文件在相同目錄下?,F(xiàn)在我們將上面的例子中的代碼抽象成類如下:
代碼:

package {

import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Symbol_class extends MovieClip {
public function Symbol_class(){

this.buttonMode = true;
this.addEventListener(MouseEvent.CLICK,onClick);
this.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
this.addEventListener(MouseEvent.MOUSE_UP,onUp);

}
private function onClick(event:MouseEvent):void{
trace("circle clicked");
}
private function onDown(event:MouseEvent):void{
this.startDrag();
}
private function onUp(event:MouseEvent):void{
this.stopDrag();
}
}
}

因為我們將類的名稱設(shè)置為Symbol_class,所以此類文件一定要保存為Symbol_class.as文件.我們還要做一步工作,在源文件中打開庫面板,右擊circle_mc選擇鏈接,復(fù)選Export for Actionscript.在class處輸入Symbol_class.as即讓我們類與元件相關(guān)連..此時測試影片,你會看到與上例中相同的結(jié)果.這里注意一點,場景中仍要保證circle_mc的存在.因為在代碼中我們并沒有動態(tài)的貼加circle_mc. 同時這個例子中,與上例一樣,我們并沒有使用As3.0的Document Class特性.
動態(tài)類(dynamic class)
此種編寫的類的方式與探索Actionscript3.0 flash9 Preview教程中的例子是一樣的,此種方式是最最常用的.對于一些稍復(fù)雜的程序來說,是由主類和多個輔助類組成的.輔助類封裝分割開的功能,主類用來顯示和集成各部分功能。如上例我們已經(jīng)封裝了小球的拖動功能?,F(xiàn)在我們想要創(chuàng)建100個這樣可以拖動的小球。
如下演示:

思路是我們已經(jīng)創(chuàng)建了封裝了拖動功能的類,我們在創(chuàng)建一個主類,用來顯示這100個具有拖動功能的小球,我們將使用As3.0的DocumnetClass 新特性.
如下:我們將主類命名為DocumentClass.as, 封裝后的拖動球功能我們命名為Drag_class.as.
DocumentClass.as
代碼:

package {

import flash.display.MovieClip;

public class DocumentClass extends MovieClip {

// 屬性
private var _circle:Drag_circle;
private var _wslink:wslink;
private const maxBalls:int = 100;
// 構(gòu)造函數(shù)
public function DocumentClass(){
var i:int;
// 循環(huán)創(chuàng)建小球
for(i=0;i<=maxBalls; i ){
// 創(chuàng)建可拖動小球的實例
_circle = new Drag_circle();
// 設(shè)置小球?qū)嵗囊恍傩?
_circle.scaleY = _circle.scaleX = Math.random();
// 場景中的x,y位置
_circle.x= Math.round(Math.random()*(stage.stageWidth - _circle.width));
_circle.y= Math.round(Math.random()*(stage.stageHeight - _circle.height));
// 在場景上顯示
addChild(_circle);
}
}

}
}


Drag_circle.as類
代碼:

package {

import flash.display.Sprite;
import flash.events.MouseEvent;

public class Drag_circle extends Sprite {

public function Drag_circle(){

this.buttonMode = true;
this.addEventListener(MouseEvent.CLICK,onClick);
this.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
this.addEventListener(MouseEvent.MOUSE_UP,onUp);

}
private function onClick(event:MouseEvent):void{
trace("circle clicked");
}
private function onDown(event:MouseEvent):void{
this.startDrag();
}
private function onUp(event:MouseEvent):void{
this.stopDrag();
}

}
}

打開我們之前所用過的fla文件,將其另存為drag_class.fla文件,與Document.as和Drag_class.as類所在目錄相同。打開庫面板,選中庫面板中的小球,右擊選擇鏈接在class名稱處輸入Drag_class.注意與上面的元件類不同在于,我們不需要讓場景中有任何內(nèi)容,因為我們已在主類DocumentClass.as中動態(tài)的貼加和顯示了circle_mc.。在DocumentClass.fla中的主場景中,在屬性面板中的Document Class輸入框中輸入我們的主類名DocumentClass.然后你就可以測試了。
不使用庫元件的動態(tài)類(dynamic class with no library)
在上例中我們使用的是已創(chuàng)建好的影片剪輯,并在庫中做了類的鏈接,這種情況對于一些有復(fù)雜圖形的情況下是比較好的選擇,如果你能很熟練的應(yīng)用Drawing Api繪制出你想要的任意圖形,那么你也可以不使用庫元件,可以直接在類中編寫,在本教程中我們主要研究的是這種方式,接下來我們看不使用庫元件如何編寫類來實現(xiàn)上面的功能。
很顯然即然不使用庫中的元件,那么我們就需要在類中直接使用Drawing Api來直接繪制。如下,類的結(jié)構(gòu)與動態(tài)類是相同的。我們需要在上例的基礎(chǔ)上做些改動
首先刪去fla中場景中的所有內(nèi)容,包括庫中的內(nèi)容。

DocumentClass.as類如下:
代碼:

package {

import flash.display.MovieClip;
public class DocumentClass extends MovieClip {
private var _circle:Drag_circle;
private const maxBalls:int = 100;
public function DocumentClass(){

var i:int;

for(i=0;i<=maxBalls; i ){

_circle = new Drag_circle();

_circle.scaleY = _circle.scaleX = Math.random();

_circle.x= Math.round(Math.random()*(stage.stageWidth - _circle.width));
_circle.y= Math.round(Math.random()*(stage.stageHeight - _circle.height));

addChild(_circle);
}
}
}
}


Drag_circle.as類
代碼:

package {

import flash.display.Sprite;
import flash.display.Shape;
import flash.events.MouseEvent;
public class Drag_circle extends Sprite {

private var _circle:Sprite;

public function Drag_circle(){

_circle = new Sprite();
_circle.graphics.beginFill(0xff0000);
_circle.graphics.drawCircle(-5, -5, 10);
_circle.graphics.endFill();
_circle.buttonMode =true;
addChild(_circle);


_circle.addEventListener(MouseEvent.CLICK,onClick);
_circle.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
_circle.addEventListener(MouseEvent.MOUSE_UP,onUp);

}


private function onClick(event:MouseEvent):void{
trace("circle clicked");
}
private function onDown(event:MouseEvent):void{
_circle.startDrag();
}
private function onUp(event:MouseEvent):void{
_circle.stopDrag();
}
}
}

注意Drag_circle.as類,我們只是增加了一段:
代碼:

_circle = new Sprite();
_circle.graphics.beginFill(0xff0000);
_circle.graphics.drawCircle(-5, -5, 10);
_circle.graphics.endFill();


還有就是構(gòu)造函數(shù)之前的聲明:private var _circle:Sprite;
測試你的影片。當(dāng)然這里我們繪制的只是一個無漸變的紅色園形。
Package Class
一般來說,一個.as文件中就一個類,但是在AS3中,現(xiàn)在允許在一個文件中定義多個類用來輔助主類。
在.as文件中的輔助類,必須定義在類包以外,并且只針對此文件中的主類和其他輔助類可見。它的基本結(jié)構(gòu)如下:
代碼:

package {
class MyClass {
function MyClass() {
var helper:MyHelper = new MyHelper();
}
}
}
class MyHelper {
function MyHelper() {
var helper:HelpersHelper = new HelpersHelper();
}
}
class HelpersHelper {
function HelpersHelper () {
}
}

注意,在包塊中最多只能定義一個類。在同一個文件中的輔助類不是包塊的一部分,并且只能在此文件中可見和被使用。
下面我們將我們將我們的類改寫成上述的packge類形式。我們將下面的代碼都寫在一個DocumentClass.as的文件中,然后在fla文件中的屬性面板中的Document Class輸入框中輸入DocumentClass類名。
代碼:

package {

import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;

// Document Class
public class DocumentClass extends MovieClip {

private var _circle:Drag_circle;
private const maxBalls:int = 100;

public function DocumentClass(){
var i:int;
for(i=0;i<=maxBalls; i ){
_circle = new Drag_circle();

_circle.scaleY = _circle.scaleX = Math.random();

_circle.x= Math.round(Math.random()*(stage.stageWidth - _circle.width));
_circle.y= Math.round(Math.random()*(stage.stageHeight - _circle.height));

addChild(_circle);
}
}
}

public class Drag_circle extends Sprite {

private var _circle:Sprite;

public function Drag_circle(){

_circle = new Sprite();
_circle.graphics.beginFill(0x6D6E71);
_circle.graphics.drawCircle(-5, -5, 10);
_circle.graphics.endFill();

addChild(_circle);

this.buttonMode = true;
_circle.addEventListener(MouseEvent.CLICK,onClick);
_circle.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
_circle.addEventListener(MouseEvent.MOUSE_UP,onUp);

}
private function onClick(event:MouseEvent):void{
trace("circle clicked");
}
private function onDown(event:MouseEvent):void{
_circle.startDrag();
}
private function onUp(event:MouseEvent):void{
_circle.stopDrag();
}
}
}
現(xiàn)在就可以測試你的影片了。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 3344永久免费 | 久久精品com| 久久久久久久久久久久久久久久久久 | 最近日本电影hd免费观看 | av电影在线观看免费 | 九九精品在线 | 精品中文字幕在线观看 | 中文字幕激情 | 色中色激情影院 | 老a影视网站在线观看免费 国产精品久久久久久久久久尿 | 亚洲午夜在线观看 | 韩国美女一区 | 三级国产三级在线 | 狠狠干天天操 | 视频一区二区三区在线播放 | 日本在线不卡一区二区 | 国产人成精品一区二区三 | 国产一区二区午夜 | 在线成人免费av | 亚洲国产超高清a毛毛片 | 亚洲小视频在线观看,com | 色呦呦一区二区三区 | 色污视频| 精品国产乱码久久久久久丨区2区 | 在线观看网址av | 亚洲码无人客一区二区三区 | 国产精品91久久久 | 色视频在线观看 | 毛片在线免费观看网址 | 最污网站 | 欧美精品久久天天躁 | 久在线观看福利视频69 | av手机在线免费播放 | 欧洲黄视频 | 毛片视频网址 | 久久丝袜脚交足黄网站免费 | 国产精品久久久久久久娇妻 | 久久影院一区二区三区 | 伊人二本二区 | 一级黄色欧美 | 万圣街在线观看免费完整版 |