0

ここで見たカウンセラーの下にこのコードを書きました。その主な目標は、xml からメイン ステージに画像をインポートし、「ドラッグ アンド ドロップ機能」でそれらを操作することです。

オンにするとすべて問題ありませんが、写真をクリックして「ドラッグアンドドロップ機能」にすると、このメッセージが表示されます

TypeError: Error #1034: Type Coercion failed: cannot convert fl.containers::UILoader@1a52f1f1 to flash.display.MovieClip.
    at forgallery_fla::MainTimeline/item_onMouseDown()
TypeError: Error #1034: Type Coercion failed: cannot convert fl.containers::UILoader@1a52f1f1 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>
4

1 に答える 1

0

UILoaderとしてキャストする必要はありませんMovieClipstartDragの方法ですSpriteUILoaderではSpriteなく、MovieClipです。

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

UILoader参考文献でこれを見つけることができたでしょう。

于 2013-05-14T12:27:15.597 に答える