Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    225

    evento miniclip non gestito (MX - AS2.0)

    Ciao a tutti. Ho una sequenza di miclip generati tramite duplicate che contengono altrettante immagini che vengono disposte sulla videata. In corrispondenza degli eventi onpress e onrelease vorrei che venisse alimentata una label che sta su _root con il nome dell'immagine, già a disposizione in un array letto da dB.

    Il problema sta nel fatto che sul primo onpress tutto funziona,

    a = (String(this))
    b = a.substr(a.length-1,a.length)
    c = Number(b)
    _root.titoloText.text = _root.titolo[c];


    ovvero mi viene generato il nome corretto dell'immagine scelta, poi l'evento on release non genera nulla


    _root.titoloText.text = ""


    e nemmeno eventuali press su altri miniclip. Avete idea del motivo?
    Spero di essere stato sufficientemente chiaro.
    Grazie

  2. #2
    se hai scritto

    mc.onPress=function(){
    a = (String(this))
    b = a.substr(a.length-1,a.length)
    c = Number(b)
    _root.titoloText.text = _root.titolo[c];
    }

    mc.onRelease=function(){
    _root.titoloText.text = ""
    }

    E' normale che l'assegnazione fatta dall'onPress vine cancellata dall'onRelease

    Oppure è proprio questo che non funziona ? Cioè non cancella il Testo ??

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    225
    on(press){
    var old_x, old_y, old_rotation, old_depth;

    old_x = this._x;
    old_y = this._y
    old_depth = this.getDepth()
    this.swapDepths(100);
    old_rotation = this._rotation;
    this._rotation = 0;
    this._xscale = 100;
    this._yscale = 100;
    this._x = _root._xmouse - this._width/2;
    this._y = _root._ymouse - this._height/2;
    this.startDrag();
    a = (String(this))
    b = a.substr(a.length-1,a.length)
    c = Number(b)
    _root.titoloText.text = _root.titolo[c];
    }
    on(release){
    var old_rotation, old_depth;
    this._x = old_x;
    this._y = old_y;
    this._xscale = 20;
    this._yscale = 20;
    this._rotation = old_rotation;
    this.swapDepths(old_depth);
    stopDrag();
    _root.titoloText.text="";
    }

    Questo è quello che ho scritto sulle azioni dell'mc. E si, in effetti dopo che il primo on press funziona, ovvero mi visualizza il nome del mc nella casella di testo, l'on release non cancella il testo e i successivi on press non cambiano il valore della casella di testo.

    Grazie dell'interessamento rempox...
    Ciao

  4. #4
    ho fatto una prova

    apri un fla nuovo

    crea un clip (una palla) ed istanzialo "btn1"

    poi sulla frame incolla questo codice

    codice:
    var titolo:Array = new Array ("", "Uno", "Due", "Tre")
    
    this.createTextField("Titolo",100,100,20,100,20)
    
    btn1._xscale = btn1._yscale = 20
    
    btn1.onPress=function(){
    	// storicizzo	
    	this.old_x = this._x;
        this.old_y = this._y
    	this.old_depth = this.getDepth()
    	this.swapDepths(100);
    	this.old_rotation = this._rotation;
    	this._rotation = 0;
    	// aziono
    	this._xscale = 100;
    	this._yscale = 100;
    	this._x = _root._xmouse - this._width/2;
    	this._y = _root._ymouse - this._height/2;
    	this.startDrag(true);
    	a = this._name
        b = a.substr(a.length-1,a.length)
        c = Number(b)
        Titolo.text = titolo[c]
    }
    
    btn1.onRelease=function(){
    	this._x = this.old_x;
    	this._y = this.old_y;
    	this._xscale = 20;
    	this._yscale = 20;
    	this._rotation = this.old_rotation;
    	this.swapDepths(this.old_depth);
    	stopDrag();
    	c=0
    	Titolo.text = titolo[c]
    }
    Vedrai che funziona

    Il secondo passo è applicare un codice ricorsivo per gli N clip che funzionano da pulsanti

    Quindi

    copia la palla altre 2 volte ed istanziali btn2 e btn3

    cambia il codice

    codice:
    var titolo:Array = new Array ("", "Uno", "Due", "Tre")
    
    this.createTextField("Titolo",100,100,20,100,20)
    
    btn1._xscale = btn1._yscale = 20
    
    MovieClip.prototype.gestioneBTN = function(){
    	
    	this.onPress=function(){
    		// storicizzo	
    		this.old_x = this._x;
    		this.old_y = this._y
    		this.old_depth = this.getDepth()
    		this.swapDepths(100);
    		this.old_rotation = this._rotation;
    		this._rotation = 0;
    		// aziono
    		this._xscale = 100;
    		this._yscale = 100;
    		this._x = _root._xmouse - this._width/2;
    		this._y = _root._ymouse - this._height/2;
    		this.startDrag(true);
    		a = this._name
    		b = a.substr(a.length-1,a.length)
    		c = Number(b)
    		Titolo.text = titolo[c]
    	}
    	
    	this.onRelease=function(){
    		this._x = this.old_x;
    		this._y = this.old_y;
    		this._xscale = 20;
    		this._yscale = 20;
    		this._rotation = this.old_rotation;
    		this.swapDepths(this.old_depth);
    		stopDrag();
    		c=0
    		Titolo.text = titolo[c]
    	}
    }
    
    for(I=1;I<4;I++){
    	this["btn"+I]._xscale=this["btn"+I]._yscale=20
    	this["btn"+I].gestioneBTN()
    }
    al posto della creazione a mano nel ciclo puoi inserire il duplicateMovieClip e dopo
    assegni il prototipo di comportamento


  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    225
    Grazie Rempox per la risposta. A parte che non mi è chiaro dove mettere questo codice (se prima lo mettevo dentro al movieclip, ora lo posso mettere sulla root?) ma poi mi domando: è possibile che debba sconvolgere il codice per una cosa tanto banale come svuotare una casella di testo? Che ha il codice che non va?

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Se non vuoi aggiornare il tuo sistema, prova ad aggiungere al tuo codice per ogni pulsante anche il releaseOutside

    on (release, releaseOutside)

  7. #7
    Aspetta io ho fatto una prova in base a quello che tu hai scritto

    di certo il sistema alternativo che ti ho inviato rimane invariato
    per 3 pulsanti o per 1000 pulsanti basta modificare il for

    non avevo voglia di ricopiare il codice sugli oggetti, e non sono certo che il duplicate movie trasporti con se il codice

    ecco perchè ti ho fornito uno script "che funziona e che ho testato"

    Ma And ti ha dato un' ulteriore soluzione ... rimane il dubbio perchè a me funziona e a te no visto che l'ho scritto in altro modo ma i comandi sono i tuoi.


  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    225
    Sono finalmente riuscito ad accdedere a Flash (che periodaccio!) e devo dire che la prova di And, che era la più semplice da implementare, non ha sortito esito...
    Per quanto riguarda i suggerimenti di Rempox ho qualche domanda: il mio codice nella root è:

    premuto = false;
    //_root.titoloText.text="";
    not_premuto = false;
    fscommand ("allowscale", "false");
    //filexml = "http://localhost/guzzi/giochi_gonfiabili/giochi_gonfiabili.asp"
    filexml = "giochi_gonfiabili/giochi_gonfiabili.asp"

    ApriXML();
    function ApriXML () {
    mioxml = new XML();
    myarray = new Array();
    mioxml.load(filexml);
    mioxml.onLoad = ElaboraXML;
    function ElaboraXML (success) {
    if (mioxml.loaded) {
    myarray = mioxml.childNodes;
    Dati();
    MenuPag();
    CreaTabelle();
    delete myarray;
    delete mioxml;
    }
    };
    };


    function Dati () {
    titolo = new Array();
    percorso = new Array();
    for (k=0; k<=myarray.length; k++) {
    if (myarray[k].nodeName == "titolo") {
    titolo.push(myarray[k].childNodes.toString());
    } else if (myarray[k].nodeName == "percorso") {
    percorso.push(myarray[k].childNodes.toString());
    } else if (myarray[k].nodeName == "totrec") {
    _root.totrec=myarray[k].childNodes.toString();
    }
    };
    };

    // Funzione che crea il menù delle pagine con gestione dell'infinito
    function MenuPag(){
    numero = Math.floor((totrec-0.5)/6+1);
    nmaxpag = numero;
    for (i=0; i<numero; i++){
    barranav.attachMovie("page", "pagine"+i,i+100);
    barranav["pagine"+i]._x=10;
    barranav["pagine"+i]._y=10+i*30;
    k=i+1;
    if (k<=9){app="0"+k}else{app=k};
    barranav["pagine"+i].pagina=app;
    barranav["pagine"+i].PageNumber = k;
    if (k<=9){nmaxpag ="0"+ k;} else {nmaxpag=k};
    //_root.loading = paginainiziale+"/"+nmaxpag+" - TOT MESSAGGI "+ totrec ;
    };
    };


    // Funzione che Crea i clip e li posiziona sullo stage del filmato
    function CreaTabelle () {
    for (i=0; i<titolo.length; i++) {
    portafoto.duplicateMovieClip("portafoto"+i, i)
    //attachMovie("portafoto", "portafoto"+i, i);
    // Attribuisco la coordinata X e Y
    if(i < 3){
    _root["portafoto"+i]._x = 335 + i*(126)
    _root["portafoto"+i]._y = 270;
    }
    else{
    _root["portafoto"+i]._x = 335 + (i-3)*126
    _root["portafoto"+i]._y = 396;
    }
    // Passo al clip le variabili che ho preso dall'XML e messo negli Array
    //_root["portafoto"+i].titolo = titolo[i];
    _root["portafoto"+i].loadMovie(percorso[i]);
    _root["portafoto"+i]._xscale = 20;
    _root["portafoto"+i]._yscale = 20;
    //trace(_root["portafoto"+i]._height);
    //trace(_root["portafoto"+i]._width);
    _root["portafoto"+i]._rotation = -30;
    }
    };


    // Funzione che rimuove tutti i Clip dalla scena prima di posizionare i clip della nuova pagina
    function Rimuovi(){
    for (a=0; a<titolo.length; a++){
    _root["portafoto"+a].removeMovieClip();
    };
    };

    mentre in corrispondenza del miniclip posto sullo schermo fuori visuale, e istanzaito "portafoto"

    on(press){
    var old_x, old_y, old_rotation, old_depth;

    old_x = this._x;
    old_y = this._y
    old_depth = this.getDepth()
    this.swapDepths(100);
    old_rotation = this._rotation;
    //old_width = this._width;
    //old_height = this._height;
    this._rotation = 0;
    this._xscale = 100;
    this._yscale = 100;
    this._x = _root._xmouse - this._width/2;
    this._y = _root._ymouse - this._height/2;
    this.startDrag();
    a = (String(this))
    b = a.substr(a.length-1,a.length)
    c = Number(b)
    _root.titoloText.text = _root.titolo[c];
    }
    on(release, releaseOutside){
    var old_rotation, old_depth;
    this._x = old_x;
    this._y = old_y;
    this._xscale = 20;
    this._yscale = 20;
    this._rotation = old_rotation;
    this.swapDepths(old_depth);
    stopDrag();
    _root.titoloText.text="";
    }

    a questo punto sono davvero in panne: continua a funzionare al primo clic e poi ignora il rilascio, sia inside che outside, e anche ulteriori clic...Strano perchè il caricamento delle immagini avviene correttamente...
    Davvero non capisco...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    225
    ops...se volete testare il problema dal vivo: www.guzzieugenio.com ingresso in italiano, sezione giochi gonfiabili.
    Grazie ancora

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    mmh, funge

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.