Flash: visualizzare nome pagina flippingbook

Salve a tutti! Ho deciso di scrivere questo messaggio perché avrei bisogno di aiuto. Premetto che già altre volte ho gironzolato sul forum che mi è stato utile per trovare soluzioni e chiarimenti; ma stavolta non ho trovato niente che facesse al caso mio...

Sto realizzando un flippingbook con FlashcCS4 in cui ho incorporato il Component GGBook, basato sul flippingbook 225 (AS2) di www.iparigrafika.hu.
√ą la prima volta che uso flash, ma grazie alla rete sono riuscito a creare una casella di testo dinamico con relativi tasti per i diversi testi, i tasti di scorrimento e i tasti per le azioni del filmato.

Mi piacerebbe aggiungere un'altra casella di testo in cui si vedano i nomi delle pagine sfogliate (magari assegnati ai simboli usati dal Component come pagine, o comunque dei nomi collegati in qualche modo a quelle pagine). Saranno infatti disegni antichi e quindi i loro nomi sono cose tipo "21r" per il front e "21v" per i back.

Posto il codice che ho finora e spero tanto che qualcuno mi aiuti o mi dica cosa cercare per risolvere il problema:-C

fscommand("fullscreen", true);

fscommand("allowscale", false);

System.useCodepage = true;

var myLV:LoadVars = new LoadVars();
myLV.onLoad = function() {
loadedInfo.htmlText = myLV.info;
loadedInfo.scroll = 1;
frameCounter = 1;
speedFactor = 3;
scrollCheck();
};
myLV.load("testo_1.txt");

function scrollCheck() {
if (loadedInfo.maxscroll == loadedInfo.scroll) {
button_up.enabled = false;
button_down.enabled = false;
} else {
button_up.enabled = true;
button_down.enabled = true;
}
}

function scrollText() {
onEnterFrame = function () {
if (frameCounter%speedFactor == 0) {
if (scrollDirection == "up" && loadedInfo.scroll>1) {
loadedInfo.scroll -= 1;
} else if (scrollDirection == "down" && loadedInfo.scroll<loadedInfo.maxscroll) {
loadedInfo.scroll += 1;
}
frameCounter = 0;
}
frameCounter++;
};
}


button_up.onPress = function() {
scrollDirection = "up";
scrollText();
};
button_up.onRelease = function() {
delete onEnterFrame;
};

button_down.onPress = function() {
scrollDirection = "down";
scrollText();
};
button_down.onRelease = function() {
delete onEnterFrame;
};

button_eng.onRelease = function() {
myLV.load("testo_2.txt");
};

button_ita.onRelease = function() {
myLV.load("testo_1.txt");
};

button_succ.onRelease = function() {
mybook.nextPage();
};

button_prec.onRelease = function() {
mybook.prevPage();
};

button_auto.onRelease = function() {
mybook.startAutoFlip();
button_auto._visible = false;
button_stop._visible = true;
};

button_stop._visible = false;

button_stop.onRelease = function() {
mybook.stopAutoFlip();
button_auto._visible = true;
button_stop._visible = false;
};

button_inizio.onRelease = function() {
mybook.gotoPage(1,true);
};


Dimenticavo: la presentazione è per un kiosk e quindi preferirei che tutto si lanciasse dal flashplayer e non da qualche browser.
Grazie

 mautara, N.D.

ciao

se devi aggiungere una lettera al contatore
puoi fare cosi


function scrollText() {
onEnterFrame = function () {
if (frameCounter%speedFactor == 0) {
if (scrollDirection == "up" && loadedInfo.scroll>1) {
loadedInfo.scroll -= 1;
} else if (scrollDirection == "down" && loadedInfo.scroll<loadedInfo.maxscroll) {
loadedInfo.scroll += 1;
}
frameCounter = 0;
}
frameCounter++;
pagina=frameCounter+r;
};
}


________
crei una casella dinamica con nome var pagina
e il gioco è fatto

 max_400, N.D.

max_400 ha scritto:
se devi aggiungere una lettera al contatore

puoi fare cosi


function scrollText() {
onEnterFrame = function () {
if (frameCounter%speedFactor == 0) {
if (scrollDirection == "up" && loadedInfo.scroll>1) {
loadedInfo.scroll -= 1;
} else if (scrollDirection == "down" && loadedInfo.scroll<loadedInfo.maxscroll) {
loadedInfo.scroll += 1;
}
frameCounter = 0;
}
frameCounter++;
pagina=frameCounter+r;
};
}


________
crei una casella dinamica con nome var pagina
e il gioco è fatto



Scusa, ma non capisco e forse non mi sono spiegato bene. Il contatore non ce l'ho e non so nemmeno come farlo...
Il codice che ho postato funziona per scorrere la casella di testo e attivare i vari pulsanti presenti sullo stage.
Sempre sullo stage ho un'istanza del Component GGbook (istanza chiamata "mybook") in cui si visualizza il flipbook. Le pagine sono caricate dal Component e sono dei simboli (movie-clip) contenuti nella libreria.
Come faccio a creare una casella di testo in cui vengano di volta in volta visualizzati i nomi di questi simboli, man mano che si sfogliano le pagine?

(Aggiungo infine che il codice che ho postato è frutto di scopiazzamenti e incroci presi qua e per i web e che a parte i comandi per i pulsanti sono una vera capra in AS).

Grazie


 mautara, N.D.

attachmovie:


Se le pagine che man mano vai a caricare sono presi dalla libreria avranno un loro ID (Identificatore)
e in genere si usa attachMovie associandolo ad una variabile numerica ti permetterà di cambiare una pagina dopo l'altra
come ad esempio una galleria fotografica che prende gli oggetti dalla libreria.

Conosci questo comando?

 max_400, N.D.

Grazie della disponibilità!

Non conosco il comando attachMovie, ma da una rapida ricognizione su internet mi sembra che faccia quello che dice il nome...;-)
Io non so GGbook come richiami le pagine - probabilmente con attachmovie -, ma io mi limito a mettere i nomi assegnati alle pagine in libreria all'interno di uno dei campi dei parametri del component (pages).

Stamattina ho provato a trasformare l'istanza di GGbook in movieclip (mybook) e agganciargli questo codice - page_text è la casella di testo dinamico:

onClipEvent (enterFrame) {
_root.page_text.text = _currentframe;
}

ma viene fuori sempre "1", mentre se scrivo mybook._currentframe, esce scritto "2". Aggiungo che tutto si svolge in un unico fotogramma di timeline, quindi il 2 per me è veramente inspiegabile...

Quale sarà mai il comando per fargli capire che deve agire al girasi delle pagine??? grrr...:-|

 mautara, N.D.

forse questo ti può servire

http://max400.forumfree.it/?t=51713600

è una discussione in cui si parla di attachMovie potrai vedere un filmato flash che ti carica le foto (nel tuo caso le pagine) in sequenza e parla anche della costruzione di un Array. Tutte le pagine in un Array e i titoli delle pagine in un altro Array...
Comunque una galleria fotografica che prende gli oggetti dalla libreria studia bene queste nozioni di base ed in seguito sarai in grado di risolvere il tuo problema.

Buona fortuna
ciao!

 max_400, N.D.

parzialmente risolto

Ho ancora bisogno d'aiuto. Con il codice postato sotto faccio in modo che mi si visualizzino i NUMERI delle pagine (senza la prima e l'ultima che sono invisibili)

onEnterFrame = function () {
if (mybook.page == 0) {
page_text_left.text = " ";
} else {
page_text_left.text = mybook.page;
}
if (mybook.page == mybook.maxpage) {
page_text_right.text = " ";
} else {
page_text_right.text = mybook.page+1;
}
};


Ho capito infatti che il Component GGBook genera un Array chiamato "page" che gli serve a numerarle. Ho anche capito che genera (sempre da solo) un altro Array chiamato "objs", in cui tiene traccia dei nomi dei Simboli.
Però se scrivo

page_text_left.text = mybook.objs

al posto di

page_text_left.text = mybook.page

vedo tutti gli oggetti in sequenza nello stesso TextField(Simbolo 1,Simbolo 2,......)
Se ridefinisco l'Array

var objs:Array = new Array();
i=0

e scrivo mybook.objs[i] appare sempre e solo "Simbolo 1" (e nemmeno con

for(i=0;i<maxobjs-1;i++) objs[i] = i

cambia niente.)

C'è un modo di far cambiare "objs" così come cambia "page"????

 mautara, N.D.

ciao

per vedere tutti gli elementi di un array
basta fare

prova=new Array(1,2,3,4,5);
verifica=prova; //casella dinamica per la verifica

se invece devi cambiare il nome dell'array

prova=new Array(1,2,3,4,5);
prova2=prova;
verifica=prova2; //casella dinamica per la verifica

Spero ti sia stato utile
ciao

 max_400, N.D.

ciao

Purtroppo l'inesperienza fa sì che non mi riesca a spiegare.
Con

page_text_left.text = mybook.page
page_text_left.text = mybook.page+1

vedo nei rispettivi campi di testo i numeri delle pagine a mano a mano che le pagine si sfogliano. Mentre invece con

page_text_left.text = mybook.objs

vedo tutti insieme i nomi dei simboli che costituiscono le pagine (vedo tutti gli elementi dell'Array nel campo di testo, indipendentemente dalla pagina visualizzata).
Volevo sapere se c'era un modo di vederli uno alla volta come accade con "page".

 mautara, N.D.

Un array in sequenza...

prova=new Array(1,2,3,4,5);
i=0;
verifica=prova[i];

avanti.onPress=function(){
if(i<prova.length-1){
i++;
verifica=prova[i];
}
}
indietro.onPress=function(){
if(i>0){
i--;
verifica=prova[i];
}
}

esempio
http://digilander.libero.it/max_maxuell/array-cambiare-num-in-sequenza.swf

occorrono 2 pulsanti con nome istanza "avanti" e "indietro"
stessa cosa si può fare con gli oggetti in libreria
basta mettere nell'array gli IDentificatori di ciascun oggetto presente in libreria.



 max_400, N.D.

e poi ancora con attachMovie prendi le foto dalla libreira...

...utilizzando la stessa chiave primaria [i]

esempio
http://digilander.libero.it/max_maxuell/array-cambiare-num-in-sequenza-piu-foto-ID.swf

lo script

prova=new Array(1,2,3,4,5);
foto=new Array("banane","coniglietto","gallina","arance","mele");
i=0;
verifica=prova[i];
_root.contenitore.attachMovie(foto[i], ["foto2"+i], 1);

avanti.onPress=function(){
if(i<prova.length-1){
i++;
verifica=prova[i];
_root.contenitore.attachMovie(foto[i], ["foto2"+i], 1);
}
}
indietro.onPress=function(){
if(i>0){
i--;
verifica=prova[i];
_root.contenitore.attachMovie(foto[i], ["foto2"+i], 1);
}
}


Con questo concludo il mio supporto... se altri che stanno leggendo vogliono fornire il loro contributo o hanno qualke idea migliore... non esitino a rispondere...

Grazie per la collaborazione
by max_400

 max_400, N.D.

OK! Grazie!

 mautara, N.D.
001design.it ® è un marchio registrato.
© 2004-2017 Molfese Paolo - P.Iva: 03430820617 - All rights reserved | Tutti i diritti sono riservati.