2013-05-14 41 views
0

我寫了下面的輔導員,我看到這裏 這個代碼,其主要目的是從XML導入圖像到主舞臺,然後和他們一起玩的「拖放功能」UILoader不作爲MovieClip拖放;你怎麼能做出的UILoader表現得像影片剪輯

當我打開它,一切都很好, 但是當我的圖片點擊查看「拖放功能」 我得到這個消息

TypeError: Error #1034: Type Coercion failed: cannot convert fl.containers::[email protected] to flash.display.MovieClip. 
    at forgallery_fla::MainTimeline/item_onMouseDown() 
TypeError: Error #1034: Type Coercion failed: cannot convert fl.containers::[email protected] to flash.display.MovieClip. 
    at forgallery_fla::MainTimeline/item_onMouseUp() 

如何來解決這個問題,使UILoader在UILoader的

import fl.containers.UILoader; 
import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.events.Event; 

var count:Number = 0; 
//Requires: 
// UILoader control in Library 

var xmlLoader:URLLoader= new URLLoader(); 
var myXML:XML = new XML ; 
var uiLoader:UILoader= new UILoader(); 

xmlLoader.addEventListener(Event.COMPLETE, loadXML); 
xmlLoader.load(new URLRequest("Gallery.xml")); 

function loadXML(e:Event):void 
{ 
    myXML = new XML(e.target.data); 
    trace(myXML) 
    for(var i:int = 0; i <2; i++) 
    { 
    root["pic"+i].source = myXML.pic[i]; 
    } 
} 

var dragArray:Array = [pic0, pic1]; 

for(var i:int = 0; i < dragArray.length; i++) 
{ 
    dragArray[i].buttonMode = true; 
    dragArray[i].addEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown); 
    dragArray[i].addEventListener(MouseEvent.MOUSE_UP, item_onMouseUp); 
} 

function item_onMouseDown(event:MouseEvent):void { 
    var clip:MovieClip = MovieClip(event.currentTarget); 
    addChild(clip); //bring to the front 
    clip.startDrag(); 
} 
function item_onMouseUp(event:MouseEvent):void { 
    var clip:MovieClip = MovieClip(event.currentTarget); 
    clip.stopDrag(); 
} 

的XML樹

<?xml version="1.0" encoding="UTF-8"?> 
<Gallery height="300" width="300" > 
    <pic>p1.jpg</pic> 
    <pic>p2.jpg</pic> 
    <pic>p3.jpg</pic> 


</Gallery> 

回答

0

你不必投你UILoader作爲MovieClipstartDragSprite的方法。 UILoaderSprite,而不是MovieClip

function item_onMouseDown(event:MouseEvent):void { 
    var clip:Sprite = Sprite(event.currentTarget); 
    addChild(clip); //bring to the front 
    clip.startDrag(); 
} 

您可能已經在UILoader reference中發現了這一點。