Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: [as2] Altezza clip

  1. #1

    [as2] Altezza clip

    Ciao, ho messo flash cs3, ma mi succede una cosa che non capisco, con flash 8 andava bene. In pratica ho una funzione con all'interno un ciclo while che inserisce dentro ad un clip altri clip tramite attachmovie, il clip che contiene tutti questi clip si trova sotto ad una maschera. al termine di questo ciclo richiamo una funzione che controlla l'altezza di questo clip e se necessario fa visualizzare uno scroll. Ma l'altezza del clip non è quella reale, in pratica è più basso. Ho provato a stampare l'altezza in tempo reale nel ciclo, ed infatti da un valore sbagliato, sempre quello, che non è quello reale. Come risolvo? Con flash 8 non mi è mai capitata una cosa del genere.
    Lavoro con cs3, ma pubblico con as2.

  2. #2
    C'è qualcosa che non mi torna, questo codice si trova dentro la seconda funzione richiamata per far vedere lo scroll
    codice:
    _root.onEnterFrame=function(){trace(_root.clipStruttura.contList._height);}
    var tmpY:Number = _root.clipStruttura.mask._y;
    var tmpH:Number = _root.clipStruttura.mask._height;
    var tmpCY:Number = _root.clipStruttura.contList._y;
    var tmpCH:Number = _root.clipStruttura.contList._height+30;
    var minScroll:Number = tmpY;
    var maxScroll:Number = (tmpCY-tmpCH)+tmpH;
    var step:Number = 10;
    trace(tmpCH+">"+tmpH);
    ...
    ...
    ...
    Quello che mi stampa a video è questo
    codice:
    105.25>456.1
    542
    542
    542
    543.6
    543.6
    543.6
    543.6
    543.6
    543.6
    ...
    ...
    ...
    Non dovrebbe iniziare a stampare prima quello dell'enterframe, anche una volta, e poi l'altro trace?

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Hai già provato a impostare anche il flash player alla versione 8? Giusto per verificare che le condizioni cambino nel programma anche se si usano le stesse impostazioni di pubblicazione che si usavano nel filmato precedente.

  4. #4
    Originariamente inviato da and80
    Hai già provato a impostare anche il flash player alla versione 8? Giusto per verificare che le condizioni cambino nel programma anche se si usano le stesse impostazioni di pubblicazione che si usavano nel filmato precedente.
    La pubblicazione è in flash 8 e as2, ma il mio player è il 10.
    L'ho notato anche aprendo e ripubblicando dei vecchi fla, si presenta lo stesso problema.
    Per ora ho risolto richiamando la funzione con un setinterval ritardato, ma non è la soluzione più elegante.
    Sembra che prima esegue tutti gli script as, e poi piazza gli elementi nello stage.
    La stessa cosa mi è successa all'inizio che utilizzavo flash cs3, sempre con la stesso problema, tramite as popolo un campo di testo, poi richiamo una funzione che controlla se fare uno scroll oppure no, il maxscroll stava sempre a uno, appena richiamata la funzione, ho dovute mettere un frame in più e li richiamare la funzione per il controllo dello scroll. Ho pensato che non ricordavo più come farlo, quindi non mi sono posto il problema, ho risolto aggiungendo un frame. Ma ora ho fatto diverse prove, e non riesco a risolvere, se non quello di mettere un frame in più o richiamare la funzione con setinterval.
    Comunque faccio delle prove e pubblico anche un fla se non trovo come risolvere, così anche voi potete controllare.

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Normalmente c'è un solo caso in cui si potrebbe presentare il problema, ossia che i dati che rendono possibile il funzionamento del codice, siano caricati dall'esterno. Mi pare di aver capito che non è questo il caso, confermi?

  6. #6
    Originariamente inviato da and80
    Normalmente c'è un solo caso in cui si potrebbe presentare il problema, ossia che i dati che rendono possibile il funzionamento del codice, siano caricati dall'esterno. Mi pare di aver capito che non è questo il caso, confermi?
    I dati vengono caricati dall'esterno, ma ci sono tutti i controlli che permettono di richiamare la funzione che popola il clip (prendendoli dalla libreria tramite attachmovie) solo dopo che tutti sono stati caricati.

    edit:
    il clip viene popolato bene, con tutti i clip che devono esserci, ma in fase di popolamento, dentro al ciclo, non varia le dimensioni del clip

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non avendo a disposizione tutto il codice è complicato fare ipotesi, ma può essere che il codice che incolonna i clip attaccati venga eseguito solo dopo il controllo dell'altezza e il resto non funziona per quello.

  8. #8
    Questo è il codice
    codice:
    function impostaArticoli(){
    		_root.clipStruttura.video.stop();
    		_root.clipStruttura.video._visible=false;
    		//carico la lista delle foto
    		var ciclo:Boolean=true;
    		var n:Number=1;
    		var tmpY:Number=0;
    		while(ciclo){
    			if(this.datiStruttura["artS"+n]==undefined || this.datiStruttura["artS"+n]=="")
    				ciclo=false;
    			else{
    				var myObj:Object=new Object();
    				myObj.mini=this.datiStruttura["artS"+n];
    				myObj.big=this.datiStruttura["artB"+n];
    				myObj.id=this.datiStruttura.id;
    				myObj.testo=this.datiStruttura["artT"+n];;
    				myObj.myY=tmpY;
    				tmpY+=52;
    				//inserisco le miniature
    				_root.clipStruttura.contList.attachMovie("boxImgArt","boxImgArt"+n,_root.clipStruttura.contList.getNextHighestDepth(),myObj);
    			}
    			n++;
    		}
    		_root.clipStruttura.txtContStruNtour=this.datiStruttura.artT1;
    		_root.clipStruttura.contFoto.loadMovie("cd/"+this.datiStruttura.id+"/"+this.datiStruttura.artB1);
    		
    		_root.tmpI=setInterval(impScrollArt,1000);
                    //impScrollArt();
    	}
    La funzione si trova dentro una classe, datiStruttura contiene tutti i dati, questa è la funzione che viene richiamata.
    codice:
    function impScrollArt() {
    		clearInterval(_root.tmpI);
    		var tmpY:Number = _root.clipStruttura.mask._y;
    		var tmpH:Number = _root.clipStruttura.mask._height;
    		var tmpCY:Number = _root.clipStruttura.contList._y;
    		var tmpCH:Number = _root.clipStruttura.contList._height+30;
    		var minScroll:Number = tmpY;
    		var maxScroll:Number = (tmpCY-tmpCH)+tmpH;
    		var step:Number = 10;
    		if(tmpCH>tmpH){
    			_root.clipStruttura.contScroll._visible = true;
    			_root.clipStruttura.contScroll.down.onPress = function():Void  {
    				_root.onEnterFrame = function():Void  {
    					if (_root.clipStruttura.contList._y>=maxScroll) {
    						_root.clipStruttura.contList._y -= step;
    					} else {
    						delete _root.onEnterFrame;
    					}
    				};
    			};
    			_root.clipStruttura.contScroll.up.onPress = function():Void  {
    				_root.onEnterFrame = function():Void  {
    					if (_root.clipStruttura.contList._y<=minScroll) {
    						_root.clipStruttura.contList._y += step;
    					} else {
    						delete _root.onEnterFrame;
    					}
    				};
    			};
    			_root.clipStruttura.contScroll.down.onRelease = function():Void{delete _root.onEnterFrame;};
    			_root.clipStruttura.contScroll.up.onRelease = function():Void{delete _root.onEnterFrame;};
    			_root.clipStruttura.contScroll.down.onReleaseOutside = function():Void{delete _root.onEnterFrame;};
    			_root.clipStruttura.contScroll.up.onReleaseOutside = function():Void{delete _root.onEnterFrame;};
    		}
    		else
    			_root.clipStruttura.contScroll._visible = true;
    	}
    la seconda funzione se non la richiamo con il setinterval il clip contScroll non si vede mai, se metto un trace all'interno l'altezza del clip contList risulta 100, o giù di li, ma in realtà è alto oltre 400

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non te lo posso dire con certezza, ma penso che se richiamassi la funzione "impScrollArt" dentro al ciclo subito dopo l'attachMovie (senza setInterval) funzionerebbe correttamente.

  10. #10
    NO, non funziona, ho appena provato, se io dentro al ciclo appena sotto ad attachmovie scrivo questo trace(_root.clipStruttura.contList._height); mi da sempre lo stesso valore. invece dovrebbe incrementare ad ogni iterazione

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.