亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 辦公 > Flash > 正文

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

2020-07-17 13:17:54
字體:
來源:轉載
供稿:網友
我們已經了解到了在flash 9中如可在時間線上編寫代碼,如何將現有的時間線上的代碼轉換為外部類.以及flash9的Document Class形式,接下來我們要更細一步的來研究編寫類及外部as文件的方式.
include
如果你之前了解As1.0,As2.0編程,那么對include一定不陌生,在Actionscript 3.0中我們仍可以使用include 來導入代碼.
如下的例子:

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

//設置當光標移到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"
測試影片即可以看到與時間線上測試時相同的結果了.此種方式,在As1.0時經常使用.如果你仍習慣這種方式,在Actionscript 3.0中仍可以使用.
元件類(symbol class)
這里所說的元件件類,實際是指為flash影片中的元件指定一個鏈接類名.它與上面的include 的不同之處于,它使用的是嚴格的類結構.而不是我們習慣上的時間線編寫方式.我們要將小圓球的拖動功能封裝起來,這樣不論你創建多少可以拖動的小球,都會變得很輕松,只需要創建它的實例并顯示出來即可。
我們仍使用上例來說明問題.打開drag_include.fla文件,將其另存為Symbol_class.fla文件,新建一個Actionscript文件,將其保存為Symbol_class.as文件,與Symbol_class.fla文件在相同目錄下?,F在我們將上面的例子中的代碼抽象成類如下:
代碼:

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();
}
}
}

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

思路是我們已經創建了封裝了拖動功能的類,我們在創建一個主類,用來顯示這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;
// 構造函數
public function DocumentClass(){
var i:int;
// 循環創建小球
for(i=0;i<=maxBalls; i ){
// 創建可拖動小球的實例
_circle = new Drag_circle();
// 設置小球實例的一些屬性
_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.注意與上面的元件類不同在于,我們不需要讓場景中有任何內容,因為我們已在主類DocumentClass.as中動態的貼加和顯示了circle_mc.。在DocumentClass.fla中的主場景中,在屬性面板中的Document Class輸入框中輸入我們的主類名DocumentClass.然后你就可以測試了。
不使用庫元件的動態類(dynamic class with no library)
在上例中我們使用的是已創建好的影片剪輯,并在庫中做了類的鏈接,這種情況對于一些有復雜圖形的情況下是比較好的選擇,如果你能很熟練的應用Drawing Api繪制出你想要的任意圖形,那么你也可以不使用庫元件,可以直接在類中編寫,在本教程中我們主要研究的是這種方式,接下來我們看不使用庫元件如何編寫類來實現上面的功能。
很顯然即然不使用庫中的元件,那么我們就需要在類中直接使用Drawing Api來直接繪制。如下,類的結構與動態類是相同的。我們需要在上例的基礎上做些改動
首先刪去fla中場景中的所有內容,包括庫中的內容。

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();


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

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();
}
}
}
現在就可以測試你的影片了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性猛交xxxx富婆| 日韩精品在线观看一区| 日韩av一区二区在线观看| 色一区av在线| 久久九九全国免费精品观看| 日韩精品视频中文在线观看| 国产精品久久久久久久久久ktv| 日韩电影免费观看中文字幕| 精品毛片三在线观看| 中文字幕av一区二区三区谷原希美| 亚洲精品99久久久久中文字幕| 亚洲乱码一区av黑人高潮| 欧美极品少妇全裸体| 欧美亚洲视频一区二区| 国产亚洲精品一区二555| 中文字幕自拍vr一区二区三区| 国产裸体写真av一区二区| 国产精品美女视频网站| 成人黄色短视频在线观看| 91在线无精精品一区二区| 欧美日韩国产一区二区| 国产大片精品免费永久看nba| 亚洲网址你懂得| 正在播放欧美一区| 亚洲精品98久久久久久中文字幕| 国产精品夜间视频香蕉| 亚洲一区二区黄| 久久国产精品久久精品| 欧美伦理91i| 欧美日韩国产一区在线| 国产精品99久久久久久人| 欧美成人国产va精品日本一级| 这里只有精品视频在线| 亚洲精品乱码久久久久久按摩观| 欧美精品久久久久久久久久| 九九久久精品一区| 中文字幕不卡在线视频极品| 久久婷婷国产麻豆91天堂| 成人福利免费观看| 日韩免费在线播放| 97视频网站入口| 久久久久亚洲精品成人网小说| 亚洲淫片在线视频| 中文字幕欧美精品日韩中文字幕| 日本午夜在线亚洲.国产| 亚洲第一色中文字幕| 亚洲人成网站999久久久综合| 久久电影一区二区| 国产精品网站入口| 亚洲午夜av电影| 日韩在线观看高清| 日韩视频精品在线| 茄子视频成人在线| 午夜精品福利在线观看| 亚洲久久久久久久久久久| 永久免费看mv网站入口亚洲| 日韩av电影院| 精品国产欧美一区二区三区成人| 欧美激情精品久久久久久变态| 国产主播精品在线| 国产精品日韩久久久久| 欧美视频一区二区三区…| 久久久噜噜噜久久久| 色哟哟网站入口亚洲精品| 成人黄色免费看| 精品久久久av| 亚洲欧美精品suv| 欧美高清视频在线观看| 亚洲视频网站在线观看| 国产精品久久久av久久久| 国内精品一区二区三区四区| 不用播放器成人网| 国产成人精品久久二区二区91| 韩剧1988在线观看免费完整版| 国产精品无av码在线观看| 欧美一区第一页| 亚洲综合日韩在线| 国产精品99久久久久久白浆小说| 欧美亚州一区二区三区| 成人久久久久久| 国产精品三级美女白浆呻吟| 日韩中文综合网| 日韩av大片免费看| 日韩欧美在线看| 蜜月aⅴ免费一区二区三区| 狠狠躁夜夜躁人人爽天天天天97| 亚洲一区二区福利| 97avcom| 日韩精品视频在线播放| 国产精品久久久久久久久久久久久| 黑人巨大精品欧美一区二区免费| 亚州欧美日韩中文视频| 亚洲人成人99网站| 亚洲人成电影网站色| 丝袜美腿亚洲一区二区| 欧美大成色www永久网站婷| 国产男女猛烈无遮挡91| 精品国产一区二区三区久久狼黑人| 国产91免费看片| 日韩av网址在线| 欧美午夜激情小视频| 97国产精品免费视频| 欧美日韩视频免费播放| 欧美成人黑人xx视频免费观看| 亚洲人成电影在线| 亚洲乱码国产乱码精品精天堂| 91av在线播放视频| 亚洲欧美日韩在线高清直播| 日韩欧美在线免费| 欧美色欧美亚洲高清在线视频| 欧美亚洲伦理www| 欧美亚洲另类在线| 国产一区二区香蕉| 一区二区三区黄色| 亚洲欧美精品中文字幕在线| 精品偷拍各种wc美女嘘嘘| 成人免费看吃奶视频网站| 日本久久中文字幕| 国产欧美久久一区二区| 九九热r在线视频精品| 国产91精品久久久| 久久亚洲成人精品| 欧美在线视频在线播放完整版免费观看| 疯狂做受xxxx欧美肥白少妇| 亚洲欧美日韩一区二区三区在线| 国产一区二区精品丝袜| 中文字幕日韩av| 91久久国产综合久久91精品网站| 美女国内精品自产拍在线播放| 91在线免费看网站| 91精品国产乱码久久久久久久久| 蜜臀久久99精品久久久无需会员| 国产日韩欧美在线| 精品久久久久久中文字幕大豆网| 久久夜精品香蕉| 国产精品视频一区二区三区四| 亚洲国产欧美一区二区三区久久| 中文字幕久久精品| 久久久久久久久久久国产| 久久人人97超碰精品888| 国产精品久久久久久婷婷天堂| 亚洲第一男人天堂| 亚洲国产精品悠悠久久琪琪| 国产免费亚洲高清| 亚洲精品日韩av| 在线成人中文字幕| 国产啪精品视频| 最近日韩中文字幕中文| 成人h视频在线| 欧美日韩高清在线观看| 国外成人在线播放| 992tv成人免费影院| 91久久久久久久久久久久久| 国内精品免费午夜毛片| 欧美精品videosex极品1| 国产又爽又黄的激情精品视频| 91成人免费观看网站| 成人av色在线观看| 亚洲欧美另类人妖| 亚洲人成在线观看网站高清| 日本电影亚洲天堂| 69久久夜色精品国产69乱青草| 色偷偷av一区二区三区| 亚洲欧洲日产国码av系列天堂|