2011-02-28 22 views
0

新しいメッセージ - 解決した解決方法AS3を使用してドラッグアンドドロップオブジェクトに外部画像を読み込む方法は?

これは、私がムービークリップに外部画像を読み込んでドラッグアンドドロップするために使用したものです。 フィードバック部分は古いコードとほとんど同じです。

var holdermc_Arr:Array = new Array(4); 
for(var i:uint = 0; i < holdermc_Arr.length; i++) 
{ 
    holdermc_Arr[i] = this["panel" + (i+1) + "_mc"]; 

    var myLoader:Loader = new Loader(); 
    var fileRequest:URLRequest = new URLRequest("images/" + (i+1) + ".jpg"); 
    myLoader.load(fileRequest); 

    holdermc_Arr[i].addChild(myLoader); 

    holdermc_Arr[i].addEventListener(MouseEvent.MOUSE_DOWN, pickUp); 
    holdermc_Arr[i].addEventListener(MouseEvent.MOUSE_UP, dropIt); 
    holdermc_Arr[i].buttonMode = true; 
} 

var startX:Number; 
var startY:Number; 
var counter:Number = 0; 

function pickUp(event:MouseEvent):void { 
startX = event.currentTarget.x; 
startY = event.currentTarget.y; 

setChildIndex(MovieClip(event.currentTarget),numChildren-1); 
event.currentTarget.startDrag(); 
reply_txt.text = ""; 

} 

OLD MESSAGEベロー

これは私が取得しています現在のエラーと私の最新の試みです。

複数のドラッグ可能なムービークリップを追加する方が簡単であるため、以前の試みのコードで作業したいと思っています。

しかし、どちらのコードでも、基本的な問題と思われるのは、「ローダー」のプロパティを正しく設定していないということです。

例へのリンクが必要かどうかを教えてください。

エラーは以下の通りです:

ReferenceError: Error #1069: Property dropTarget not found on flash.display.Loader and there is no default value. at cs5test_fla::MainTimeline/ReleaseToDrop()

コードは以下の

var myLoader:Loader = new Loader(); 
panel1_mc.addChild(myLoader); 
var url:URLRequest = new URLRequest("uploadedImages/photo_1.jpeg"); 
myLoader.load(url); 

var startX:Number; 
var startY:Number; 
var counter:Number = 0; 

panel1_mc.addEventListener(MouseEvent.MOUSE_DOWN, ClickToDrag); 

function ClickToDrag(event:MouseEvent):void 
{ 
panel1_mc.startDrag(); 
startX = event.target.x; 
startY = event.target.y; 
    reply_txt.text = ""; 
event.target.parent.addChild(event.target); 
} 

stage.addEventListener(MouseEvent.MOUSE_UP, ReleaseToDrop); 

function ReleaseToDrop(event:MouseEvent):void 
{ 
panel1_mc.stopDrag(); 
var myTargetName:String = "target" + event.target.name; 
var myTarget:DisplayObject = getChildByName(myTargetName); 

if (event.target.dropTarget != null && event.target.dropTarget.parent == myTarget){ 

    reply_txt.text = "Good Job!"; 
    event.target.x = myTarget.x; 
    event.target.y = myTarget.y; 
    event.target.removeEventListener(MouseEvent.MOUSE_DOWN, ClickToDrag); 
    event.target.removeEventListener(MouseEvent.MOUSE_UP, ReleaseToDrop); 
    event.target.buttonMode = false; 
    counter++; 
} else { 
    reply_txt.text = "Try Again!"; 
    event.target.x = startX; 
    event.target.y = startY; 
} 
if(counter == 1){ 
    reply_txt.text = "Congrats, you're finished!"; 
} 
} 

OLDER MESSAGEベロー

である私はまだ苦労しています。

私はこのすべてに慣れているので、私はそれをつかむことができる最高のものを結びつけています。

私が扱おうとしているActionScriptは一番下にあります。

誰かがこのコードを見て、次のエラーを出さずに外部画像をドラッグ可能なムービークリップに読み込む方法を教えてもらえたら、本当にありがたいです。

ReferenceError: Error #1069: Property startDrag not found on flash.display.Loader and there is no default value. at dragdropDilema_fla::MainTimeline/pickUp() ReferenceError: Error #1069: Property stopDrag not found on flash.display.Loader and there is no default value. at dragdropDilema_fla::MainTimeline/dropIt()

私は、単純なVARローダーを使用しようとしましたが、私はエラーに見ることができるもののために、私はロードされたイメージではなく、現在であるドラッグ可能なムービークリップで作業するのstartDragプロパティを設定する必要があります場所??

私はそれぞれのために、次を使用していた場合、私はちょうどシンプルされているだろうと思った:

var myLoader:Loader = new Loader(); 
imageHolder.addChild(myLoader); 
var url:URLRequest = new URLRequest("uploadedImages/photo_1.jpeg"); 
myLoader.load(url); 

、次にような何か:

square_mc.imageHolder.addChild(myLoader); 

をしかし、私はエラーを取得することを行うときとにかく私が画像をクリックすると。

ここにコード全体があります。オブジェクトがターゲットを満たしたときにカウントされ、最後までメッセージが出力されます。

panel1_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickUp); 
panel1_mc.addEventListener(MouseEvent.MOUSE_UP, dropIt); 

panel1_mc.buttonMode = true; 


var startX:Number; 
var startY:Number; 
var counter:Number = 0; 

function pickUp(event:MouseEvent):void { 
startX = event.target.x; 
startY = event.target.y; 
event.target.startDrag(true); 
reply_txt.text = ""; 
event.target.parent.addChild(event.target); 
} 

function dropIt(event:MouseEvent):void { 
event.target.stopDrag(); 
var myTargetName:String = "target" + event.target.name; 
var myTarget:DisplayObject = getChildByName(myTargetName); 
if (event.target.dropTarget != null && event.target.dropTarget.parent == myTarget){ 
    reply_txt.text = "Good Job!"; 
    event.target.x = myTarget.x; 
    event.target.y = myTarget.y; 
    event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickUp); 
    event.target.removeEventListener(MouseEvent.MOUSE_UP, dropIt); 
    event.target.buttonMode = false; 
    counter++; 
} else { 
    reply_txt.text = "Try Again!"; 
    event.target.x = startX; 
    event.target.y = startY; 
} 
if(counter == 1){ 
    reply_txt.text = "Congrats, you're finished!"; 
} 
} 

ありがとう。

+0

こんにちはAntonio、あなたの質問にあなたのコードを追加できますか?もちろん、関連するビットだけ、thanks.Rob – robertp

+0

Rob。私は実験しているFLAへのリンクを張っています。アクションスクリプトは半ページ以下で、205 kbしかありません。 – antoniog447

+0

ヘルプをドラッグするのもお探しですか?以前投稿したものから、エラーが出てきているように見えます。 –

答えて

1
import flash.display.DisplayObjectContainer; 
import flash.display.Loader; 
import flash.display.MovieClip; 
import flash.events.Event; 
import flash.events.MouseEvent; 
import flash.net.URLRequest; 

var _dragMc:MovieClip = new MovieClip(); 
addChild(_dragMc); 

loadImage("image.jpg") 

function loadImage(path:String):void 
{ 
    var _loader:Loader = new Loader(); 
    var _loaderToLoad:URLRequest = new URLRequest(path); 
    _loader.load(_loaderToLoad); 
    _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded, false, 0, true); 
} 

function imageLoaded(evt:Event):void 
{ 
    addLoader(evt.currentTarget.loader, _dragMc); 
} 

function addLoader(loader:Loader, container:DisplayObjectContainer):void 
{ 
    container.addChild(loader); 
    addListeners(); 
} 

function addListeners():void 
{ 
    _dragMc.addEventListener(MouseEvent.MOUSE_DOWN, setDrag, false, 0, true); 
} 

function setDrag(evt:MouseEvent):void 
{ 
    _dragMc.addEventListener(MouseEvent.MOUSE_MOVE, doDrag, false, 0, true); 
    _dragMc.removeEventListener(MouseEvent.MOUSE_DOWN, setDrag); 
} 

function doDrag(evt:MouseEvent):void 
{ 
    _dragMc.startDrag(false, null); 
    stage.addEventListener(MouseEvent.MOUSE_UP, endDrag, false, 0, true); 
    _dragMc.removeEventListener(MouseEvent.MOUSE_MOVE, doDrag); 
} 

function endDrag(evt:MouseEvent):void 
{ 
    _dragMc.stopDrag(); 
    _dragMc.addEventListener(MouseEvent.MOUSE_DOWN, setDrag, false, 0, true); 
    stage.removeEventListener(MouseEvent.MOUSE_UP, endDrag); 
} 

これは_dragMc呼ばMovieClip上に画像をロードします。残りの部分はあなた次第です。 _dragMcをドラッグできるようにする簡単なコードも追加しました。

関連する問題