re: grizzly
A getDefinitionByName-et leszámítva pontosan így csináltam. Erre viszont nem értem, hogy miért lehet szükség. Simán a betöltött mozin (event.target.content) keresztül próbáltam elérni.
re: grizzly
A getDefinitionByName-et leszámítva pontosan így csináltam. Erre viszont nem értem, hogy miért lehet szükség. Simán a betöltött mozin (event.target.content) keresztül próbáltam elérni.
re: aaatom
Ugy probalod, hogy az fla Library-jaba importalod, majd linkage, betoltod az swf-et, es a getDefinitionByName-el megkapott osztalyt peldanyositod? Ha nem tudod mirol beszelek akkor leirom reszletesebben
Sziasztok!
Egy swf fájlban elhelyezek egy Font objektumot azzal a céllal, hogy ezt mozit betöltöm különböző swf fájlokba, és használom a mozi betűkészletét. Nyilván erre azért van szükségem, mert nem szeretném, hogy minden egyes moziban "feleslegesen" foglaljon ugyanaz a betűkészlet 40-50 kb-ot. A problémám ott kezdődik, hogy nem ismeri fel, úgy sem, ha a betöltött mozin belül helyezem el a tartalmat. Egyáltalán lehetséges az ilyen, vagy abszolút rossz úton járok? Egyéb ötlet, tanács?
Előre is köszönettel:
Tomi
re: kp
megcsinalhatod ugy is, hogy elmented a content-et egy valtozoba (nem lokalisba hanem a fuggvenyen kivul;
var contentMC:MovieClip; function onLoadComplete(e:Event):void{ contentMC = e.currentTarget.content; blank.addChild(contentMC); } majd contentMC.c - vel elered a "c" mc-t ami a betoltott swf-en belul van majd var mc = blank.getChildByName('').getChildByName('c');
alapvetoen az kulonbozik as3ban hogy mig 2ben ha hozzaadsz egy mc-hez egy masikat gyerekkent, akkor ott valtozoja is lesz, itt ilyen nincs, errol neked kell gondoskodnod. Kivetel amikor timeline-on pakolgatsz, mert akkor alapbeallitasnal magatol letrehozza a valtozoneveket.
re: grizzly
Igen ez csak akkor működik, ha közvetlenül csak azt az mc-t adom stage-hez, nem pedig magát az egész swf-et. Tehát a lenti kódnál
blank.addChild(e.currentTarget.content)
helyett
blank.addChild(e.currentTarget.content.mcneve)
parancsot használok akkor később a getChildByName-mel el tudom érni az swf-et:
var mc = blank.getChildByName('c'); //a 'c' instance nevet még a betöltendő swf-ben adtam meg, //ahol a c nevű moziklip a stage-en van, nem pedig a libraryban mc.apha = .5;
ellenkező esetben egy hibát kapok vissza:
Error #1009: Cannot access a property or method of a null object reference.
Próbáltam így is:
var mc:MovieClip = e.currentTarget.content as MovieClip; mc.name = 'a_betoltott_cucc_uj_neve'; blank.addChild(mc);
de ekkor másik hibát kapok:
Error #2078: The name property of a Timeline-placed object cannot be modified.
Szóval most egyenlőre marad a korábbi megoldás, amit belinkeltem...
Nem gondoltam volna, hogy ez ennyire nehézkes...
re: kp
ezt surun hasznalom, flex alapu projekteknel jon jol, de sztem ahhoz ami neked kell erre nincs szukseg
re: kp
ha mar adtal neki nevet akkor nem kell megegyszer. ahogy alcyone mondta
black.getChildByName("amitadtalnekinevet")
Hát végül így oldottam meg, nem tudom van-e szebb/jobb megoldás...
http://newmovieclip.wordpress.com/2007/08/23/access-load-library-assets-from-another-swf-in-flash-cs3/
re: vizoli
Természetesen próbáltam már. Eredmény:
Error #2078: The name property of a Timeline-placed object cannot be modified.
Bár lehet én rontok el valamit...
var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadComplete); loader.load(new URLRequest("b.swf")); function onLoadComplete(e:Event):void{ var b:MovieClip = e.currentTarget.content; b.name = 'b_movie'; blank.addChild(b); }
re: kp
Utananeztel annak, amit mondtam?:)
El kell nevvel latnod a betoltott swf-et, hogy utana hivatkozhass ra. Egyebkent getChaldAt()-el is tudnal hivatkozni ra, ha nem nevezned el, de inkabb adj neki .name tulajdonsagot es getChildByName("amit adtal neki").
re: grizzly
az e.currentTarget.content.mc1 egészen addig jó, míg nem adom hozzá addChild-dal container mc-hez. Az e.currentTarget.content.mc1-gyel ugye az onLoadComplete függvényen belül érem el. Onnantól kezdve, amint hozzáadom a blank mc-hez(blank.addChild(e.currentTarget.content), már undefined-et dob vissza, a blank.mc1-re (mert ugye ez lenne a logikus elérése nem?
Kilistázva az objektumokat azt látom viszont, hogy "blank.instance5.mc1". Azonban ha így próbálom meg elérni, akkor "Error #1010: A term is undefined and has no properties." hibát kapok.
re: kp
az e.currentTarget.content.mc1 nem jo?
re: kp
Szia! :)
Tobbfelekeppen lehet..nezz utana a .name tulajdonsagnak es a getChildByName() metodusnak!
Sziasztok!
Egy látszólag zsír egyszerű problémába futottam bele, de egyszerűen sehogy sem jövök rá, hogy mi lehet a megoldás. Adott a következő helyzet:
Van két darab swf-em (legyen "a.swf" és "b.swf"). A "b.swf"-ben van egy pár darab MovieClip (legyenek: "mc1" és "mc2"). A "b.swf"-et betöltöm az "a.swf" "blank" nevű üres mc-jébe az alábbi hasonló kód segítségével:
var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoadComplete); loader.load(new URLRequest("b.swf")); function onLoadComplete(e:Event):void{ blank.addChild(e.currentTarget.content); }
A kérdés egyszerű: hogy a rákba érem el "a.swf"-ből az "mc1" nevű mc-t, ami a betöltött "b.swf"-ben található.
Eddig főleg AS2-t használtam, de hallgatva az idők szavára, most próbálok áttérni AS3-ra, s bár szégyen rám nézve, de az ilyen alapvető dolgok kifognak rajtam...:)
A beküldéshez be kell jelentkezni.