Volledige versie bekijken : ButtonMode extern bepalen?
Kerro
%Europe/Berlin %251 %2010, 06:01
Ik zit me af te vragen: is het mogelijk om bepaalde true of false waarden extern in AS3 te laden?
Ik wil namelijk op een site een MC hebben met een aantal klikbare thumbnails (mc's met buttonmode dus ;)) maar ik wil dat de eindgebruiker sommige kan uitzetten op een makkelijke manier zonder dat 'ie in .fla hoeft te gaan, want dat is veel te moeilijk voor hem.
De reden waarom ik dat wil is dat het gaat om extern geladen thumbnail-series die vervangbaar moeten zijn. Nou wil ik animaties hebben met een maximum aantal thumbnails die klikbaar zijn maar dan zit ik met het probleem dat als er minder dan 10 zijn ik "valse buttons" overhoud...
Het zou ideaal zijn als ik er een textfile bij kon leveren met "thumb1.buttonmode=true" die de eindgebruiker dan kan aanpassen naar behoefte.
Kan dit? En zo ja hoe vertel ik mijn .fla (as3) dat op te halen?
Alvast bedankt oh wijze FlashFocussers! ;)
Bartj3
%Europe/Berlin %281 %2010, 06:44
Wat je kan doen is een xml bestand maken en die door flash in laten lezen, in het xml bestand kan je aangeven welke thumb true moet zijn of niet, en als je wilt kan je hier zelfs een cms systeem bij maken waardoor de klant helemaal niets meer hoeft te wijzigen in de xml maar gewoon een paar vinkjes aan of uit kan zetten op een online pagina.
Op http://www.gotoandlearn.com/ zijn enkele tutorials te vinden die goed uitleggen hoe je de xml op moet maken, en hoe je hem in kan lezen met flash.
Kerro
%Europe/Berlin %852 %2010, 20:27
Bedankt voor de snelle reactie Bart! Ik zie het nu pas omdat ik vergeten was mezelf te abonneren op m'n eigen discussie en tevergeefs mijn mail in de gaten hield... kan gebeuren als je om 05.00 nog wakker ben ;)
Ik heb het al een beetje bekeken en xml is ideaal voor dit project. Komt als geroepen!
Thanks :D
Kerro
%Europe/Berlin %279 %2010, 06:42
Ok mocht iemand er interesse in hebben dan deel ik hier even hoe ik via een textfile mijn eindgebruiker de thumbnails "aan" en "uit" kan laten zetten:
Allereerst de textfile:
Thumbnail_1_Bestaat=1
&Thumbnail_2_Bestaat=1
&Thumbnail_3_Bestaat=1
&Thumbnail_4_Bestaat=1
&Thumbnail_5_Bestaat=1
&Thumbnail_6_Bestaat=1
&Thumbnail_7_Bestaat=0
&Thumbnail_8_Bestaat=0
&Thumbnail_9_Bestaat=0
&Thumbnail_10_Bestaat=0
En hier roep ik het aan in het script:
var Thumbs11:URLLoader = new URLLoader(new URLRequest("Cgallery1 Sub1 Thumbnails/buttons aan of uit.txt"));
Thumbs11.addEventListener(Event.COMPLETE, ThumbsRead11);
function ThumbsRead11(event:Event):void {
var ReadThumbs11:URLLoader = URLLoader(event.target);
var OnOffs11:URLVariables = new URLVariables(ReadThumbs11.data);
var Thumb111:String = OnOffs11.Thumbnail_1_Bestaat;
var Thumb112:String = OnOffs11.Thumbnail_2_Bestaat;
// enz enz...
if (Thumb111 == 1) {
// hier stop ik de functies in die afhangen van de aanwezigheid van een thumbnail
C1S1Btn1.buttonMode = true;
C1S1Btn1.useHandCursor = true;
C1S1Btn1.mouseChildren = false;
C1S1Btn1.addEventListener(MouseEvent.ROLL_OVER, C1S1Btn1RollOverHandler);
C1S1Btn1.addEventListener(MouseEvent.ROLL_OUT, C1S1Btn1RollOutHandler);
function C1S1Btn1RollOverHandler(myEvent:MouseEvent) {
C1S1Btn1.gotoAndStop(2);
}
function C1S1Btn1RollOutHandler(myEvent:MouseEvent) {
C1S1Btn1.gotoAndStop(1);
}
} else if (Thumb111 == 0) {
//waarschijlijk overbodig ;)
C1S1Btn1.buttonMode = false;
C1S1Btn1.useHandCursor = false;
C1S1Btn1.mouseChildren = false;
}
Ik vrees dat vele slimmerds hier dit rotte code vinden maar ik wou deze oplossing toch delen voor het geval dat iemand er wat aan heeft!
PS: ik had in het eerste geval in de textfile =wel en =niet gebruikt en dat aangeroepen met (Thumb111 == "wel"), werkte in het begin prima maar hield toen ineens op met werken. Geen idee waarom.... maar 1 en 0 werken nu prima.
Jan
%Europe/Berlin %632 %2010, 15:10
var Thumb111:String = OnOffs11.Thumbnail_1_Bestaat;
if (Thumb111 == 1)
Je vergelijkt een string met een int. De conversie gebeurt automatisch maar strikt genomen had je moet checken met:
if (Thumb111 == "1")
En dan had je volgens mij gemerkt dat dat evenmin werkte als jouw vorige '=="wel"' en dat komt omdat je achter elke waarde een 'onzichtbare' enter hebt staan:
Thumbnail_1_Bestaat=1
&Thumbnail_2_Bestaat=1
&Thumbnail_3_Bestaat=1
Daar komt in flash binnen als:
Thumbnail_1_Bestaat=1\r&Thumbnail_2_Bestaat=1\r&Thumbnail_3_Bestaat=1\r
En dus moest je eigenlijk vergelijken met:
if (Thumb111 == "1\r")
In AS2 kon je dit oplossen door met een extra & toe te voegen vlak achter elke waarde, want dan denkt flash dat daar een nieuwe (welliswaar lege) var begint:
Thumbnail_1_Bestaat=1&
&Thumbnail_2_Bestaat=1&
&Thumbnail_3_Bestaat=1&
Maar AS3 staat zulke alleenstaande, 'lege' ampersands in een querystring niet toe en dus zou je eigenlijk alles alles achter elkaar moeten zetten:
Thumbnail_1_Bestaat=1&Thumbnail_2_Bestaat=1&Thumbnail_3_Bestaat=1
Door de automatische string/number conversie komt het bij jou nu (toevallig) goed uit, maar ik zou zulke zaken toch liever zelf in de hand hebben...
Jan
Kerro
%Europe/Berlin %098 %2010, 02:21
Ah dus daarom werkte "wel" wel in de eerste instantie - ik had op dat moment maar 1 regel in het textbestand staan. Mooi want ik begreep totaal niet waarom dat ineens ophield, zonder error kwam ik niet ver en met tracen kon ik alleen achterhalen dat "wel" niet binnenkwam...
De reden dat ik in de textfile alles onder elkaar heb gezet (en dus de onzichtbare enters erin gestopt heb) is puur voor gebruiksvriendelijkheid.
Ik wil het overzichtelijk houden voor de eindgebruiker.
Maar als ik dus dit doe:
(Thumb111 == "1\r")
blijft het stabiel? Ik wil het ook graag bij "1" houden in het textbestand - voorkomt mogelijke typfouten e.d.
In ieder geval bedankt voor het inzicht Jan!
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.