PDA

Volledige versie bekijken : hoe movieclip instantie aanspreken


niveda
%Europe/Berlin %483 %2006, 11:36
Hey iedereen

Ik zit met een flash probleempje en zal proberen de situatie zo eenvoudig mogelijk uitleggen.

Het betreft een foto album. Ik heb 2 delen: een "bibliotheek" waar thumbnails van de foto's te vinden zijn, en een "album" waar één van de foto's vergroot weergegeven wordt en je die kunt bewerken (vergroten ,...)

Het probleem zit bij het aanspreken van de thumbnails. Eigenlijk is de bibliotheek een movieclip die "mc_thumbs" heet, en de thumbnails (foto's) worden er opgezet met een functie die een nieuwe movieclipt aan mc_thumbs hangt als volgt:
target.createEmptyMovieClip("foto" + teller, target.getNextHighestDepth());

(dit is heel vereenvoudigd, uiteraard zit er veel meer code achter).

Maar wat ik nu wil hebben is, als ik met m'n muis klik op één van de foto's in mc_thumbs, dat ik dan die specifieke gecreëerde movieclip kan aanspreken (zodanig dat ik dan de betreffende foto kan ophalen om op het album te plaatsen).

ik dacht eerst dat ik in die klasse waar die lege movieclip aangemaakt wordt iets à la: "this.onMouseClick = function (...) " moest zetten, maar dan krijg ik een foutmelding dat onClipEvents niet kunnen bestaan binnen een klasse ...

Weet iemand de juiste werkwijze (heel algemeen) om dit uit te voeren?

Alvast heel erg bedankt!

xtr0
%Europe/Berlin %500 %2006, 12:00
"foto" + teller wordt de instance name, dus als teller 1 is krijg je "foto1" als instance name en die roep je zo aan:

foto1.onRelease = function ()
{
// Je acties
}

Alleen dit is erg veel werk als je veel thumbnails hebt...
Kan je misschien even de code er omheen laten zien?

Emveedee
%Europe/Berlin %510 %2006, 12:15
Ik neem aan dat je je thumbs attached in een for-loop?

Het makkelijkste is om ze in een array te duwen,
en elk mc een nummer mee te geven.
Later kun je ze dan makkelijk aanspreken.


var a:Array = new Array();

for(var i:Number = 0; i < 10; i++)
{
var mc:MovieClip = target.createEmptyMovieClip("foto" + i, target.getNextHighestDepth());

mc.nr = i;

mc.onRelease = function()
{
trace(this);
trace(a[this.nr]);
}

a.push(mc);

}

niveda
%Europe/Berlin %692 %2006, 16:37
Hey,

eerst en vooral al bedankt voor de uitleg.

I.v.m. de eerste opmerking: het is idd niet te doen om voor elke instantie code te schrijven, alleen al omdat ik vooraf niet weet hoeveel foto's erin komen (de gebruiker kan zelf onbeperkt veel foto's uploaden via een toevoeg-knop).

De 2de optie, met een array werken, lijkt me al veel beter. Aleen is het probleem hier een beetje gelijkaardig, ik kan toch moeilijk in het begin van de code een array aanmaken op deze manier:

var a:Array = new Array();

...omdat , iedere keer er op de toevoegknop geduwd wordt, de code opnieuw doorlopen wordt en de array dus overschreven (vrees ik) ... Maar zal het toch eens proberen. Merci

Dit is de code die ik gebruik voor het aanmaken van de thumbnail-bibliotheek + de code voor het klikken op de foto (er is wat code weggelatne ook voor de overzichtelijkheid):

public function drawFoto(target:MovieClip, instanceName:String, x:Number, y:Number):Void {
var foto_mc:MovieClip = target.createEmptyMovieClip(instanceName, target.getNextHighestDepth());

....


foto_mc.onMouseDown = function(){
_root.input = "er is geklikt op: " + this._name;
}
};

Voor alle duidelijkheid, als ik deze code gebruik, en ik klik gelijk waar op mn flash toepassing, zegt hij ALTIJD dat er geklikt is op foto0 (de eerste foto dus). Ook als ik op de andere foto's klik of op een plaats buiten de thumbnail-movieclip klik...