FLASH : setproperty bij loadmovie

Ik heb wat liggen te klooien in Flash, maar ik krijg de properties van een extern gelinkt beeld (via loadmovie) niet veranderd

loadMovieNum(“http://www.bs-services.be/images/routegroot.jpg”, 0);
setProperty(“routegroot.jpg”, _xscale, “75”);
stop();

wat doe ik mis, ik vermoed target bij set property maar zou echt niet weten hoe ik het dan moet invullen… wie weet er raad.

Ik doe dit even uit mijn blote hoofd, heb al maanden Flash van binnen niet meer gezien. Je wil een 'movie' inladen, maar verwijst naar een .jpg bestand. Dat kan (natuurlijk?) niet. Je moet een .swf bestand inladen. In die .swf kun je het plaatje opslaan, dat is prima. Bijvoorbeeld vanuit illustrator.

Vervolgens verwijs je met de setProperty naar de ingelade .jpg. Dat kan niet. Volgens mij moet je (altijd?) verwijzen naar een referentie in naam van een object. Een movieclip bijvoorbeeld, waarin je die swf hebt ingeladen, of de movieclip waar je de jpg hebt geplaatst.

probeer dit is:

[code:1:fdc1982b82]loadmc.loadMovie("images/routegroot.jpg");
loadmc._xscale=50;
loadmc._yscale=50;
[/code:1:fdc1982b82]

loadmc = instance name van je lege movieclip waar je plaatje ingeladen wordt

BTW. je kan wel gewoon een jpg inladen :slight_smile:

Ok, je laad beste een externe clip of jpg niet zomaar op de stage, dat is slecht te controleren. Dus eerste maak je een lege movieclip aan.

[code:1:a1f1a75186]
var scale:Number = 50;
// Maak lege clip met unieke depth
_root.createEmptyMovieClip("holder",getNextHighestDepth());
// Laad externe clip of jpg (non progressive) in de lege clip
_root.holder.loadMovie("images/routegroot.jpg");
// Scale de clip
_root.holder._xscale=scale;
_root.holder._yscale=scale; [/code:1:a1f1a75186]

Het kan zijn dat er nog wat foutjes in staan, ik heb flash niet tot mijn beschikking.
En bij de publish settings kies je voor actionscript 2.

Succes.

Met een kleine aanpassing

[code:1:f3050bc565]// Herbruikbare functie
MovieClip.prototype.scale = function(xscale:Number, yscale:Number) {
this._xscale = xscale;
this._yscale = yscale;
};
//
var scale:Number = 50;
// Maak lege clip met unieke depth
_root.createEmptyMovieClip("holder", getNextHighestDepth());
// Laad externe clip of jpg (non progressive) in de lege clip
_root.holder.loadMovie("route.jpg");
// Scale de clip met de functie
_root.holder.scale(scale, scale);

[/code:1:f3050bc565]

Hoi Konijn,

Je script klopt op de variable na, je hebt het nadien nog aangepast zie ik, maar dat moet ik nog even testen, zal wel morgen of zo zijn, nu is het lekker terrasjesweer

groetjes en bedankt

Voor de geintereseerden. Zo maak je alles met een for loop:

[code:1:33329e7d7c]var max:Number = 4;
var alpha:Number = 50;
var xscale:Number = 75;
var yscale:Number = 75;
var xbound:Number = 0;
var ybound:Number = 0;
var spacing:Number = 100;
//
for (var i = 0; i<max; i++) {
_root.creatEmptyMovieClip("beeld"+i, i);
// Naast elkaar met start op 0
_root["beeld"+i]._x = xbound+(spacing*i);
// Start op 0
_root["beeld"+i]._y = ybound;
//
_root["beeld"+i]._alpha = alpha;
_root["beeld"+i]._xscale = xscale;
_root["beeld"+i]._yscale = yscale;
// Laad clip
// beeld0.jpg - beeld1.jpg …
_root["beeld"+i].loadMovie("beeld"+i+".jpg");
}
[/code:1:33329e7d7c]

[quote:fd2eb45983="konijn"]Met een kleine aanpassing

[code:1:fd2eb45983]// Herbruikbare functie
MovieClip.prototype.scale = function(xscale:Number, yscale:Number) {
this._xscale = xscale;
this._yscale = yscale;
};
//
var scale:Number = 50;
// Maak lege clip met unieke depth
_root.createEmptyMovieClip("holder", getNextHighestDepth());
// Laad externe clip of jpg (non progressive) in de lege clip
_root.holder.loadMovie("route.jpg");
// Scale de clip met de functie
_root.holder.scale(scale, scale);

[/code:1:fd2eb45983][/quote:fd2eb45983]

Hoe bepaal je dan met dit script de positie van je ingeladen plaatje?

Dat is standaard x:0 y:0;

[code:1:b48eef6c1e]// Herbruikbare functie
MovieClip.prototype.scale = function(xscale:Number, yscale:Number) {
this._xscale = xscale;
this._yscale = yscale;
};
//
var scale:Number = 50;
var xbound:Number = 10;
var ybound:Number = 10;
// Maak lege clip met unieke depth
_root.createEmptyMovieClip("holder", getNextHighestDepth());
// Laad externe clip of jpg (non progressive) in de lege clip
_root.holder.loadMovie("route.jpg");
// Zet op de juiste positie
_root.holder._x = xbound;
_root.holder._y = ybound;
// Scale de clip met de functie
_root.holder.scale(scale, scale); [/code:1:b48eef6c1e]

Ja ik zag dat hij standaart op 0,0 werd geladen, dit werkt stuk beter dan de manier waarop ik altijd dingen inlaad :) thanks

en als ik deze functie op een knop wil mikken dan gewoon?

[code:1:a0a15b4248]
on (press) {
// Herbruikbare functie
MovieClip.prototype.scale = function(xscale:Number, yscale:Number) {
this._xscale = xscale;
this._yscale = yscale;
};
//
var scale:Number = 50;
var xbound:Number = 10;
var ybound:Number = 10;
// Maak lege clip met unieke depth
_root.createEmptyMovieClip("holder", getNextHighestDepth());
// Laad externe clip of jpg (non progressive) in de lege clip
_root.holder.loadMovie("route.jpg");
// Zet op de juiste positie
_root.holder._x = xbound;
_root.holder._y = ybound;
// Scale de clip met de functie
_root.holder.scale(scale, scale);
}
[/code:1:a0a15b4248]

edit:
Ik heb het even geprobeerd en ja dus :slight_smile: Maar je kan niet 2 keer hetzelfde plaatje inladen dus?

Dit alles zet je op de eerste frame: Hier word alles al aangemaakt. [code:1:335c6deddc] // Herbruikbare functie MovieClip.prototype.scale = function(xscale:Number, yscale:Number) { this._xscale = xscale; this._yscale = yscale; }; // var scale:Number = 50; var xbound:Number = 10; var ybound:Number = 10; // Maak lege clip met unieke depth _root.createEmptyMovieClip("holder", getNextHighestDepth()); // Zet op de juiste positie _root.holder._x = xbound; _root.holder._y = ybound; // Scale de clip met de functie _root.holder.scale(scale, scale); [/code:1:335c6deddc]

En dit op de knop.
Nu wordt de jpg file pas ingeladen.
Nu kan je op andere knoppen andere loadMovie()'s zetten met andere bestanden die moeten inladen.

[code:1:335c6deddc]
on (release){
// Laad externe clip of jpg (non progressive) in de lege clip
_root.holder.loadMovie("route.jpg");
}
[/code:1:335c6deddc]

hm okay :) cool!

Maar als je dan bijvoorbeeld kees.jpg op x=20 en y=90 wil plaatsen, maak je dan nog een var aan of hoe doe je dat dan? sorry dat ik zoveel vraag hoor :stuck_out_tongue:

Gaat het eigenlijk om een reeks van foto's ? Naast elkaar, onder elkaar ...

Of zijn het allemaal knoppen die iedere keer 1 foto moeten inladen.
Op dezelfde plaats.

het is niet zozeer voor iets waar ik nu mee bezig ben maar eerder intresse hoe dat zou kunnen,

zoals je hierboven hebt gedaan met die knop kan je bijvoorbeeld elke keer een plaatje inladen maar ehm bijvoorbeeld ik maak een website en ik een top plaatje en op een andere plek nog een plaatje inladen…

Dan moet je opnieuw een lege movieclip maken met nieuwe coordinaten. Die scale functie moet je dan niet meer opniew tiepen, maar dit zet je erbij op de eerste frame:

[code:1:39e8f5997e]var scale:Number = 50;
var xbound2:Number = 100;
var ybound2:Number = 10;
// Maak lege clip met unieke depth
_root.createEmptyMovieClip("holder2", getNextHighestDepth());
// Zet op de juiste positie
_root.holder2._x = xbound;
_root.holder2._y = ybound;
// Scale de clip met de functie
_root.holder2.scale(scale, scale);[/code:1:39e8f5997e]

En op die knop dan naar _root.holder2.loadMovie … verwijzen

ja precies, okidokie! Cool :)

thanks

waarom werkt dit niet?

[code:1:c2d42acfb5]// Herbruikbare functie
MovieClip.prototype.scale = function(xscale:Number, yscale:Number) {
this._xscale = xscale;
this._yscale = yscale;
};
// eventueel scale
var scale:Number = 100;
var xbound:Number = 0;
var ybound:Number = 0;
// Maak lege clip met unieke depth
_root.createEmptyMovieClip("holder", getNextHighestDepth());
// Laad externe clip of jpg (non progressive) in de lege clip
_root.holder.loadMovie("…/images/random/main/"+(Math.floor(Math.random()*4)+1)+".jpg");
// Zet op de juiste positie
_root.holder._x = xbound;
_root.holder._y = ybound;
// Scale de clip met de functie
_root.holder.scale(scale, scale);
stop();[/code:1:c2d42acfb5]

Zijn he afbeeldingen wel non progressive opgeslagen ? Werk je nog met lege movcielips die dmv actionscript zijn aangemaakt ?

Probeer dan eens dit

[code:1:92dfccc139]
// Herbruikbare functie
MovieClip.prototype.scale = function(xscale:Number, yscale:Number) {
this._xscale = xscale;
this._yscale = yscale;
};
// eventueel scale
var scale:Number = 100;
var xbound:Number = 0;
var ybound:Number = 0;
// Maak lege clip met unieke depth
_root.createEmptyMovieClip("holder", getNextHighestDepth()+1);
// Laad externe clip of jpg (non progressive) in de lege clip
_root.holder.loadMovie("…/images/random/main/"+(Math.floor(Math.random()*4)+1)+".jpg");
// Zet op de juiste positie
_root.holder._x = xbound;
_root.holder._y = ybound;
// Scale de clip met de functie
_root.holder.scale(scale, scale);
stop();
[/code:1:92dfccc139]

En zet je stop anders eens bovenaan ?
Mss kan dat helpen.

jup de plaatjes waren progressive opgeslagen ^^. Ik zit hier op een stageplek en moet ook alles zelf doen hier :p laat je ff iemand anders plaatjes fiksen, ohoh ;)