2015-04-05 70 views
0

我試圖在我自己的Flash動畫中嵌入一個「預製」Flash動畫庫3。兩個動畫獨立運作良好。但是,一旦我插入照片庫到我自己的項目中,我收到一個錯誤;TypeError:錯誤#1006:addChild不是函數

TypeError: Error #1006: addChild is not a function. 
at project_fla::galeri_6/onCompleteXmlLoad() 
at flash.events::EventDispatcher/dispatchEventFunction() 
at flash.events::EventDispatcher/dispatchEvent() 
at flash.net::URLLoader/onComplete() 

我的flash按鈕代碼導致畫廊是;

stop(); 

galeri_btn.addEventListener(MouseEvent.CLICK, galeri); 

function galeri(event:MouseEvent):void 
{ 
    gotoAndStop(3); 
} 

最後,flash gallery代碼是;

import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.events.Event; 
import flash.display.MovieClip; 
import flash.display.Loader; 
import flash.events.MouseEvent; 
import flash.geom.Rectangle; 
import flash.display.Sprite; 
import flash.text.TextField; 
import flash.text.TextFormat; 


var xmlLoader:URLLoader = new URLLoader(new URLRequest("photo_gallery.xml")); 

xmlLoader.addEventListener(Event.COMPLETE, onCompleteXmlLoad); 

var xmlFile:XML; 


var xcoord:int = 10; 

var gal:gallery = new gallery(); 
gal.x = 10; 
gal.y = 10; 
addChild(gal); 

var thumbsContainer:Sprite = new Sprite(); 
thumbsContainer.x = 10; 
thumbsContainer.y = 320; 
addChild(thumbsContainer); 


var txtTitle:TextField = new TextField(); 
txtTitle.x = 15; 
txtTitle.y = 15; 
var format:TextFormat = new TextFormat(); 
format.bold = true; 
format.color = 0xFFFFFF; 
format.size = "20"; 
format.font = "Arial"; 
txtTitle.defaultTextFormat = format; 
addChild(txtTitle); 

var txtDesc:TextField = new TextField(); 
txtDesc.x = 15; 
txtDesc.y = 40; 
var format1:TextFormat = new TextFormat(); 
format1.color = 0x000000; 
format.font = "Calibri"; 
format.size = 12; 
txtDesc.defaultTextFormat = format1; 
addChild(txtDesc); 

function onCompleteXmlLoad(e:Event):void{ 

    xmlFile = new XML(xmlLoader.data);  

    var len:int = xmlFile.photo.length(); 

    txtTitle.text = xmlFile.photo.name[0]; 
    txtDesc.text = xmlFile.photo.desc[0]; 

    for(var i:int = 0;i<len;i++){ 
     var t:thumbs = new thumbs(); 
     t.x = xcoord; 
     t.y = 10; 
     t.buttonMode = true;   
     t.name = (i+1).toString();    
     thumbsContainer.addChild(t); 

     t.addEventListener(MouseEvent.MOUSE_OVER, onMouseover); 
     t.addEventListener(MouseEvent.MOUSE_OUT, onMouseout); 
     t.addEventListener(MouseEvent.CLICK, onMouseClick); 

     var tloader:Loader = new Loader(); 
     tloader.load(new URLRequest("thumbs/" + (i+1) + ".jpg")); 
     t.addChild(tloader);   

     xcoord += t.width + 10; 
    } 

    var loader:Loader = new Loader(); 
    loader.load(new URLRequest("img/1.jpg")); 
    gal.addChild(loader); 


    scroller.source = thumbsContainer; 
    scroller.setSize(550,110); 

} 

function onMouseover(e:MouseEvent):void{ 

    e.currentTarget.alpha = 0.5; 

} 

function onMouseout(e:MouseEvent):void{ 

    e.currentTarget.alpha = 1.0; 

} 


function onMouseClick(e:MouseEvent):void{ 

    var loader:Loader = new Loader(); 
    loader.load(new URLRequest("img/" + e.currentTarget.name + ".jpg"));  
    gal.addChild(loader);  

    txtTitle.text = xmlFile.photo.name[int(e.currentTarget.name) - 1]; 
    txtDesc.text = xmlFile.photo.desc[int(e.currentTarget.name) - 1]; 

} 

任何幫助表示讚賞。

+0

我們展示了'thumbs'類。 – subdan 2015-04-05 10:39:25

+0

如上所述,這是一個預製代碼,所以......我不知道在哪裏可以找到那個大拇指類:\最後一個代碼本身沒有我的flash項目就能很好地工作。 – 2015-04-05 11:19:29

回答

0

的問題是這兩條線中的一個內:

t.addChild(tloader);  

gal.addChild(loader); 

而這樣做的原因是因爲addChild is not a function錯誤消息。如果您在不存在的對象上調用addChild,則該錯誤將是別的。

t的類型爲thumbs - var t:thumbs = new thumbs();galgallery - var gal:gallery = new gallery();

因此,這些類(thumbsgallery)中的任一個是有問題的。他們應該做到以下幾點(類內)中的一個:

  • 延長DisplayObjectContainer - Sprite甚至MovieClip是最安全的
  • 提供addChild種功能
+0

你好,感謝你的回覆,但在我的第一條消息中,我提到照片庫只在我的項目之外工作。但是當它嵌入到我的項目中時,我遇到了這個錯誤。它可能是「不知何故」有衝突或什麼? – 2015-04-06 09:32:55

+0

那麼你正在調用'addChild'方法來做'gal'對象。所以如果缺少這種方法,肯定它不會工作:)它可以單獨工作,因爲沒有人調用非現有的方法..我的建議是看看什麼是'gallery'擴展,如果它有方法添加圖片 – 2015-04-06 14:28:16

相關問題