Archief - FLASH: Inladen external.swf laat complete clip zien (niet enkel stage resolutie)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Arcko_Drazen

Legacy Member
Greetings

Om aan te vatten, de url: http://www.arckodrazen.com/neher (sorry nog geen preloader, je zal even moeten wachten)

Klik daarna op "transport". Je zal zien dat er een filmpje inlaad en toont. Dit is gedaan aan de hand van een external.swf (naam is wel anders maar maakt niet uit).

Je ziet al direct het probleem. De witte 1pixel rand = de echte ingestelde stage size (800px x 500px). Nu, op dat extern filmpje draait een animatie die gebruik maakt van een wereldkaart (2000px x 2000px).

Zoals je ziet, laat de ingeladen clip <alles> zien en niet enkel hetgeen in de witte kader, wat wel zo is als je enkel external.swf afspeelt.

Wat ik reeds geprobeerd heb: een mask te zetten op extern.swf, maar mask wel gemaakt in main website. Werkt niet naar behoren.

Mask gezet over content in extern.swf, maar dit maar in external.swf zelf. Doch als de clip ingeladen wordt, zie je dat de clip verschoven staat (zelfde situatie als nu, maar dan met een mask over de map waar het essentiele deel is).

Hoe los ik dit fenomeen op?

Actionscript:
Code:
_root.createEmptyMovieClip("img_mc", 999);
var my_mcl:MovieClipLoader = new MovieClipLoader();

// Create listener object:
var mclListener:Object = new Object();

mclListener.onLoadProgress = function(target_mc:MovieClip, numBytesLoaded:Number, numBytesTotal:Number):Void {
    swfholderpreloader_mc.percent_txt.text = Math.round((numBytesLoaded/numBytesTotal) * 100) + "%";
	var numPercentLoaded:Number = numBytesLoaded / numBytesTotal * 100;
    trace("onLoadProgress: " + target_mc + " is " + numPercentLoaded + "% loaded");
};

mclListener.onLoadInit = function(){
	swfholderpreloader_mc._visible = false;
	swfholderpreloader_mc.percent_txt.text = "";
}

my_mcl.addListener(mclListener);

transport_mc.onRelease = function(){
	swfholder_mc._visible = true;
	my_mcl.loadClip("transport2.swf", swfholder_mc);
}

Alvast bedankt voor jullie hulp!

squan

Legacy Member
Heb je je mask vanuit actionscript aangemaakt of niet?

Ik dacht dat ik vroeger ook eens eenzelfde probleem had, en had het toen opgelost door vanuit actionscript een mask te plaatsen eenmaal de swf ingeladen was in plaats van op de stage al een mask te zetten.

Maar 't is wel al een tijdje geleden ...

Arcko_Drazen

Legacy Member
Heb ik net getest. Zelfde resultaat als met een mask in de timeline.

Code ter referentie:
Code:
mclListener.onLoadInit = function(){
	swfholderpreloader_mc._visible = false;
	swfholderpreloader_mc.percent_txt.text = "";
	swfholder_mc.setMask(swfholdermask_mc);
}

Nog voorstellen? :$ Ben eigenlijk ten einde raad. Zou het graag opzoeken op internet maar heb me al rot gezocht. Blijkbaar niemand die zo'n probleem eerder had. Of ik weet toch niet hoe ik het in google moet intikken.

Mvg
Arcko D

squan

Legacy Member
Misschien een bruut idee, maar je zou ook gewoon een stuk van je achtergrond met een stuk uitgesneden als png kunnen bewaren en zo boven je mc kunnen plaatsen waarin de movie geladen wordt.

Dus gewoon de achtergrond boven de movieclip, maar dat wat zichtbaar moet zijn uitknippen en bewaren als png of gif zodat je transparantie kan gebruiken.

Arcko_Drazen

Legacy Member
Ik heb mijn probleem gisterennacht nog opgelost met wat wiskunde.

-- In external.swf;
heb ik een box met border van 1px gemaakt, die exacte grote van Stage heeft.
heb ik 2 vars gemaakt , die constant naar de X en Y waarden van die box poll't.

Code:
var stageX:Number = box_mc._x;
var stageY:Number = box_mc._y;

trace(stageX);
trace(stageY);

-- In main.swf;
controleer ik nadat external.swf is ingeladen wat de X en Y waarden zijn van die box. Blijkbaar waren dat positieve waarden ergens in de 300.
heb ik een mask gemaakt ter grote van Stage van external.swf

Dan: swfHolder (waar de external.swf in laadt), haal X en Y waarden op (dit zijn de werkelijk X en Y waarden met alle "extra" dinges die we normaal niet zien als we external.swf stand-alone afspelen).
Dan pas ik volgende berekening toe:

swfHolder_mc._x -= swfHolder_mc.StageX (ik trek dus de waarde van de var die constant wordt gemeten van de box in external.swf af van zijn werkelijke grote)

Zelfde met de y waarden

Code:
mclListener.onLoadInit = function(){
	swfholderpreloader_mc._visible = false;
	swfholderpreloader_mc.percent_txt.text = "";
	swfholder_mc._x -= swfholder_mc.stageX;
	swfholder_mc._y -= 	swfholder_mc.stageY;
}

Hopelijk is dit genoeg voor een latere referentie

Mvg
Arcko D
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan