2015-04-05 69 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

相关问题