- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- Passare un comando pulsante da XML a Action script
-
Passare un comando pulsante da XML a Action script
Ciao a tutti!
Il menù fighissimo che potete vedere in questo link
flashden.net/item/xml-team-menu/3356
carica dei clip filmato "dude" identificati anche con la proprietà di concatenamento, identificatore "dude1", "dude2", "dude3", ecc...
Caricati grazie alle action script contenenti in un clip (che non contiene grafica, solo azioni), che poi è il menù. E grazie ai comandi del file "menu.xml".Il problema è che si aprono dei link ad altre pagine, ma per migliorare la navigazione del sito, interamente in flash, occorre che i** pulsanti (dude) si aprano delle scene all'interno dell'swf**.
é possibile, combiando dei comandi???
Il problema è che le sagome del menù (dude) vengono caricate grazie al file .xmlQueste le azioni del clip filmato menu:
// Importing the transition class import mx.transitions.*; import mx.transitions.easing.*; easeSpeed = 3; // set the ease sensetivity MovieClip.prototype.elasticScale = function(toSize) { easeType = mx.transitions.easing.Regular.easeInOut; myTween = new Tween(this, "_yscale", easeType, this._yscale, toSize, easeSpeed); myTween = new Tween(this, "_xscale", easeType, this._xscale, toSize, easeSpeed); }; // Here the array object is created. var rubrieken:Array = new Array(); // Here the XML object is created. myXML = new XML(); myXML.ignoreWhite = true; myXML.onLoad = function(success) { // De data from the xml is loaded into flash // Using a 'for' loop the data is placed inside the array if (success) { menuItems = this.firstChild; for (i=0; i<menuItems.childNodes.length; i++) { rubriek = menuItems.childNodes*; rubrieken.push(rubriek); } } // As soon as the data is loaded int the array the function below will be executed attachMenu(); }; myXML.load("menu.xml"); // This function attaches the people figures to the stage with the right data function attachMenu() { // This margin variable sets the space on the right and the left. roght now 80px; margin = (Stage.width-680)/rubrieken.length; for (i=0; i<rubrieken.length; i++) { loadDude = rubrieken*.attributes.dude; var menuItems = peopleHolder.attachMovie(loadDude, "dude"+i, 10000+i); menuItems._x = menuItems._x+(margin)*i; // This inline fuction executes the proximity function onEnterFrame menuItems.onEnterFrame = function() { proximity(this); }; menuItems._href = rubrieken*.attributes.href; menuItems.idText = rubrieken*.attributes.dudesname; menuItems.knopTekst.text = rubrieken*.attributes.naam; // The events when you roll over the button menuItems.onRollOver = function() { this.swapDepths(10000+i); // makes the tooltip appear this.nameTip._alpha = 100; // Out the name from the xml inside the tooltip this.nameTip.idTag.text = this.idText; }; menuItems.onRollOut = function() { // makes the tooltip disappear this.nameTip._alpha = 0; }; menuItems.onRelease = function() { getURL(this._href, "_self"); }; } } // This here is the function that calculates the size of each item depending on the proximity of the mouse position // You could play a little with these number but it is kinda tricky. function proximity(clip) { var x:Number = peopleHolder._xmouse; var y:Number = peopleHolder._ymouse; var cx:Number = clip._x; var cy:Number = clip._y-clip._height/2; var prox:Number = Math.sqrt((x-cx)*(x-cx)+(y-cy)*(y-cy)); // if the mouse is closer to the object than 100px it increases its size if (prox<100) { clipx = 300-prox*2; clip.elasticScale(clipx); // if the mouse is futher away than 100 it keeps it original size } else { clipx = 100; clip.elasticScale(clipx); } } ```**Questo il contenuto del file "menu.xml":** [html]<?xml version="1.0" encoding="iso-8859-1"?> <rubriekenxml> <project dude="dude0" dudesname="Sam" href="...link..."/> <project dude="dude1" dudesname="Richard" href="...link..."/> <project dude="dude2" dudesname="John" href="...link..."/> <project dude="dude3" dudesname="Curtis" href="...link..."/> <project dude="dude4" dudesname="Charles" href="...link..."/> <project dude="dude5" dudesname="Otis" href="...link..."/> <project dude="dude6" dudesname="Benny" href="...link..."/> <project dude="dude7" dudesname="Ray" href="...link..."/> <project dude="dude8" dudesname="Billy" href="...link..."/> <project dude="dude9" dudesname="Paul" href="...link..."/> </rubriekenxml>[/html] Chi ha qualche idea/soluzione...???
-
si ma se fai un sito in flash un po di actionscript lo dovresti sapere iam...
nel tuo caso basta inserire al posto dell'azione getURL quella che vuoi che esegua....se vuoi cambiarla poi runtime puoi fare uno switch(variable) dove variable dipende dal nodo xml corrente...
se vuoi un consiglio passa a as3
-
Ma un po' lo so... un po'...
Quindi devo cambiare, nell'actionscript:menuItems.onRelease = function() { getURL(this._href, "_self");
Con...?
menuItems.onRelease = function() { gotoAndPlay(??????????);
L'ho sparata così... non saprei che comando inserire di preciso.
Mentre nel'xml va cambiato:
[HTML]
<project dude="dude0" dudesname="l'evento" href="...link..."/>
[/HTML]
Con...?
Cosa va esattamente al posto di href???Poi mi butterò sull'ultimo flash, e vedrò di imparare AS3!
Adesso uso la versione 8.
-
allora...
1)devi aprire un'altra pagina??? risposta: NO!, quindi href lo puoi togliere del tutto!
2)Cosa va al posto di href? risposta Me lo dovresti dire tu iam... mettici per esempio un attributo Pageid="1", cosi sai a che fotogramma devi andare...per quanto riguarda la sostituzione della funzione tu cosa dici??
leggi il codice... "quando dude0 è stato rilasciato fai ..."
quindi ovviamente è giusto...
-
Dunque...
Per l'xml ho messo
[HTML]
<project dude="dude0" dudesname="l'evento" pageid="1"/>
[/HTML]
ma ho provato anche con scena + fotogramma
e anche con una etichetta ad un fotogramma chiamato "tac"
[HTML]
<project dude="dude0" dudesname="l'evento" pageid="Scena 1, 1"/><project dude="dude0" dudesname="l'evento" pageid="tac"/>
[/HTML]Per le azioni
[FLASH]
menuItems.onRelease = function() {
gotoAndPlay(this._pageid);
[/FLASH]L'xml è di sicuro toppata.
Come faccio a dirgli di andare a quel preciso fotogramma? Nome scena + fotogramma, nome etichetta fotogramma?
-
iam studiati come accedere agli attributi di un file xml in flash e dopo usi la funzione
gotoAndStop(elemento.attributo_pageid)
-
Le azioni che volevo scrivere erano queste:
menuItems.onRelease = function() { gotoAndPlay(this._pageid);
-
Mi sto smazzando un po' di tutorial, ma non ne vengo a capo...
Potresti scrivermi tu il codice GreyFox?
Si tratta di poche stringe, giusto...?
-
Ho provato sostituendo action script e xml come e nella stessa scena funziona! (ma mi serve che vada in un'altra scena........!!!)
menuItems._pageid = rubrieken*.attributes.pageid; menuItems.onRelease = function() { gotoAndPlay(this._pageid);
<project dude="dude0" dudesname="l'evento" pageid="10"/>
oppure
<project dude="dude0" dudesname="l'evento" pageid="easy"/>
Dove 10 è il fotogramma e "easy" è un etichetta presente nella stessa scena
Adesso che ci penso quel menù è dentro un clip filmato (esigenze per la struttura della pagina) così ho pensato di dirgli di andare ad un fotogramma etichettato chiamato "fax" presente in un'altra scena, ma niente...
Insomma se metto un etichetta in un fotogramma all'interno di quel clip funziona,
ma va appunto al fotogramma dentro il clip...........
io devo farlo andare in un fotogramma nella scena (in cui è contenuto il menu) o in un fotogramma di un'altra scena...
che comando gli posso dare???
Centra la root vero...?
-
In definitiva, pare che così funzioni:
menuItems._pageid = rubrieken*.attributes.pageid; menuItems.onRelease = function() { _parent.gotoAndPlay(this._pageid); ```e per l'xml
<project dude="dude0" dudesname="Sam" pageid="fax"/>
Funziona anche con _root
_root.gotoAndPlay(this._pageid);
-
Un'altro problema...
Per motivi tecnici faccio caricare il menù con un loadmovieloadMovieNum("menu.swf", 1); ```che rimane caricato in tutte le scene del sito, tutto il tempo. Però adesso il comando non funziona più, va modificato... In pratica seve un comando che gli dica di andare al fotogramma di una scena contenuta nell'swf che contiene il menu.swf... Come sostituisco il _parent.gotoAndPlay ??? O cosa aggiungo???
-
Ho trovato, si cambia così:
_level.gotoAndPlay