[英]How do I control a movieclip using a button?
Actionscript新手。 Actionscript 3.0按照http://republicofcode.com/tutorials/flash/basicwebsite/上的教程開始,只要代碼保留在Flash文件中,一切正常。 當我將它移動到外部文件時,我有一個問題。
我的動作圖層關鍵幀上有以下代碼:
stop();
function goHome (e:MouseEvent):void{
gotoAndStop("Home");
}
home_btn.addEventListener(MouseEvent.CLICK, goHome);
function goAbout (e:MouseEvent):void{
gotoAndStop("About");
}
about_btn.addEventListener(MouseEvent.CLICK, goAbout);
function goLinks (e:MouseEvent):void{
gotoAndStop("Links");
}
links_btn.addEventListener(MouseEvent.CLICK, goLinks);
function goContact (e:MouseEvent):void{
gotoAndStop("Contact");
}
contact_btn.addEventListener(MouseEvent.CLICK, goContact);
一切正常但我想將代碼移動到外部as3文件並遇到問題。
我添加了Document類“site1”,這是我的外部文件的名稱。 我從我的flash文件關鍵幀中刪除了代碼並將其移動到外部文件。
這是我的site1.as中顯示的代碼
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.TextField;
public class button extends MovieClip{
public function button() {
function goHome (e:MouseEvent):void{
gotoAndStop("Home");
}
home_btn.addEventListener(MouseEvent.CLICK, goHome);
function goAbout (e:MouseEvent):void{
gotoAndStop("About");
}
about_btn.addEventListener(MouseEvent.CLICK, goAbout);
function goLinks (e:MouseEvent):void{
gotoAndStop("Links");
}
links_btn.addEventListener(MouseEvent.CLICK, goLinks);
function goContact (e:MouseEvent):void{
gotoAndStop("Contact");
}
contact_btn.addEventListener(MouseEvent.CLICK, goContact);
}
}
}
問題是,當我發布我的Flash文件時,它只是保持循環而不是暫停按鈕單擊。
任何幫助都將非常感激。
類由屬性和函數組成:通常是構造函數,它在實例化類時運行(文檔類在應用程序運行時立即運行),然后是以不同方式調用的其他函數。
你所做的就是你把所有的功能放在了構造函數中:不好。 這是一個功能,你只是不這樣做(雖然從技術上講,你可以做匿名功能,但這是一個不同的故事)。
此外,應在構造函數中添加事件偵聽器。 添加事件監聽器是調用一個函數,並且(據我所知)你不能從其他函數之外的類調用函數。
基本上,你應該從構造函數中取出你的函數,如下所示:
package{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.TextField;
public class button extends MovieClip{
public function button() {
home_btn.addEventListener(MouseEvent.CLICK, goHome);
about_btn.addEventListener(MouseEvent.CLICK, goAbout);
links_btn.addEventListener(MouseEvent.CLICK, goLinks);
contact_btn.addEventListener(MouseEvent.CLICK, goContact);
}
function goHome (e:MouseEvent):void{
gotoAndStop("Home");
}
function goAbout (e:MouseEvent):void{
gotoAndStop("About");
}
function goLinks (e:MouseEvent):void{
gotoAndStop("Links");
}
function goContact (e:MouseEvent):void{
gotoAndStop("Contact");
}
}
}
另一件事是文件名應該與類名相同。 也就是說,您的文檔類應該被稱為button.as
而不是site1.as
。 我不完全確定它是否在Flash IDE中是100%必需的(自從我使用它以來已經有一段時間了),因為它沒有給出錯誤,但即使它不是它的好習慣。
研究類如何工作以及具體記錄類是一個好主意。 這是關於類的kirupa教程 , 這里是關於文檔類的ActiveTuts +教程 。
使用相同的名稱命名您的類和文件。 我建議使用以下代碼。
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.TextField;
public class YourClassName extends MovieClip
{
public function YourClassName() {
home_btn.addEventListener(MouseEvent.CLICK, goHome);
about_btn.addEventListener(MouseEvent.CLICK, goAbout);
links_btn.addEventListener(MouseEvent.CLICK, goLinks);
contact_btn.addEventListener(MouseEvent.CLICK, goContact);
}
private function goHome(e:MouseEvent):void {
gotoAndStop("Home");
}
private function goAbout(e:MouseEvent):void {
gotoAndStop("About");
}
private function goLinks(e:MouseEvent):void {
gotoAndStop("Links");
}
private function goContact(e:MouseEvent):void {
gotoAndStop("Contact");
}
}
}
AS3比AS2更明確。 我建議你使用private
/ public
訪問者。
編輯。
'button'不是一個非常好的類名,但它會起作用。
1)命名你的文件,類和構造函數:'button':
public class button extends MovieClip
public function button()
2)確保您的聯系良好! 含義:如果您想使用此類控制整個電影,請更改文檔“類”名稱以獲取button
,如果您只想從庫中控制MovieClip,請將其拖到舞台上,選中“導出動作腳本”,並更改button
“類”值。
認為使用此方法,您不需要任何實例名稱。 在這種情況下,類鏈接就足夠了。
參考:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Class.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.