Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Fermare Animazione quando fuori da swf

    Ciao a tutti ragazzi!
    ho un preblema con un carousel, pensavo fosse una banalità. ma invece mi sta facendo impazzire.
    vi posto una parte del codice:

    codice:
    buildMenu = function () {
    	for (i=0; i<total; ++i) {
    		// Duplicate clip & load image
    		duplicateMovieClip(img_mc, "img_mc"+i, i);
    		loadMovie(Image[i], this["img_mc"+i].holder);
    		// Set caption & link
    		this["img_mc"+i].info = Caption[i];
    		this["img_mc"+i].link = Link[i];
    		// Set initial position
    		this["img_mc"+i].x = 0;
    		this["img_mc"+i].y = 0;
    		// Set initial angle
    		this["img_mc"+i].angle = i*(360/total);
    		// Set blur
    		var blur = new flash.filters.BlurFilter();
    		this["img_mc"+i].blurFilter = this["img_mc"+i].filters;
    		this["img_mc"+i].blurFilter.push(blur);
    		//
    		// IMAGE ONENTERFRAME
    		//
    		this["img_mc"+i].onEnterFrame = function() {
    			// Calculate angle
    			this.angle += (xmousePos-centerX)/maxSpeed;
    			this.angle %= 360;
    			this.angle = this.angle<0 ? (360) : (this.angle);
    			// Calculate axis
    			this.x = Math.cos(this.angle*(Math.PI/180))*radius;
    			this.z = centerY-Math.sin(this.angle*(Math.PI/180))*radius;
    			this.y = yscroll*Math.sin(this.angle*(Math.PI/180))-50;
    			// Set reflection
    			this.reflection._yscale = yscroll;
    			this.reflection._y = this.reflection._height+this.holder._height/2;
    			//Set Shadow_mc
    			//this.shadow_mc._yscale = yscroll;
    			//this.shadow_mc._y = this.shadow_mc._height+this.holder._height/2;
    			// Set mask
    			this.mask._y = this.reflection._y;
    			this.mask._height = this.reflection._height;
    			// Set clip position
    			var currPos = (initialFocal-zscroll*5)/(focalLength+this.z);
    			this._x = this.x*currPos+centerX;
    			this._y = this.y*currPos+centerY;
    			// Set clip scale
    			this._xscale = this._yscale=currPos*imageScale-(this.z*12/radius);
    			// Set clip alpha
    			//this._alpha = currPos*100;
    			// Set blur filter
    			this.blurFilter[0].quality = 15-currPos*100/5.2;
    			this.filters = this.blurFilter;
    			// Set depth
    			this.swapDepths(currPos*100);
    			
    		};
    	}
    };
    
    onMouseMove = function () {
    	xmousePos = _xmouse;
    };
    Il problema è che vorrei fermare la rotazione del carosello quando esco dall'swf, sarà montato in un html, ed ora quando esco dall'swf l'animazione continua...e non so come farmarla.
    Ho provato con queste tre soluzioni

    codice:
    this["img_mc"+i].onEnterFrame = null; 
    this["img_mc"+i].onEnterFrame = undefined 
    delete this["img_mc"+i].onEnterFrame
    Ma forse le inserisco al punto sbagliato perchè o non parte del tutto l'animazione o non si ferma...
    Qualcuno ha un'idea?
    Grazie!
    PS: Ah dimenticavo...è AS2

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Sì ma dove li richiami? La i dell'indice non è valida ovunque.

  3. #3
    scusa and ma non ho capito cosa intendi...

    non c'è un metodo per farmare qualunque movimento, animazione o altro appena esci dell'swf? per esempio ho 2 file in AS3 che quando esci dall'swf si stoppa tutto...mentre questo in As2 no...bho

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    No, dovresti verificare uno per uno i clip per vedere se ci sono degli enterframe attivi.

  5. #5
    aaahhh...vuoi dire, oltre a quello che ho postato io, se ci sono altri EntreFrame che devo annullare all'uscita dal swf? giusto?

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non esattamente, voglio dire che se ti serve una funziona globale per fermare qualsiasi cosa ci sia in quell'swf, devi verificare ogni clip 1 per 1. Ma se ti limiti a voler bloccare quei clip, se stai richiamando il codice in un posto "impreciso", il codice non avrà nessuna efficacia, e ti chiedevo appunto dove tu inserissi quel codice che hai postato
    Codice PHP:
    this["img_mc"+i].onEnterFrame null
    this["img_mc"+i].onEnterFrame undefined 
    delete this
    ["img_mc"+i].onEnterFrame 

  7. #7
    ah ok...grazie per lo sbattimento che stai facendo!

    Bhe io quei tre codici ho provto ad inserirli in più posti:
    1- all'interno dello stesso enterframe
    2- appena fuori dalla graffa dell'enterframe
    3- sullo stesso layer dell'enterframe, ma applicato ad un rollout in modo che richimasse la funzione quando uscivo da una data area...

    ma niente...e queste 3 soluzioni le ho provate per tutte e tre le righe di codice...

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Se lo fai all'interno dell'enterframe devi usare this e basta
    this.onEnterFrame = null;

    Se lo usi appena fuori dall'enterFrame, ma sei ancora dentro al ciclo, è corretto, ma elimini subito l'enterframe che avevi appena scritto.

    Se lo usi in un rollout, devi riproporre l'intero ciclo, ma è probabile che se fai imposti il rollout sull'area, il this si riferisca all'area stessa e non al suo contenitore (che dovrebbe essere anche il contenitore dei clip da fermare).

    Ah, come nella seconda risposta, anche nella prima è quasi inutile creare l'enterframe, perchè il codice in pratica lo fai eseguire solo una volta.

  9. #9
    dunque ho SEMI-risolto così:
    ho visto che c'è il codice del click sulle immagine del carosello che ferma la rotazione portando il mouse al centro

    codice:
    bttn.onRelease = function() {
    	getURL(link, "_blank");
    	_parent.xmousePos = _parent.centerX
    };
    Allora ho fatto in modo che uscendo da un'area anche in quel caso il mouse va al centro, cosi:

    codice:
    _parent.hit_area.onRollOut = _parent.hit_area.onReleaseOutside = function() {
    	_parent.xmousePos = _parent.centerX
    };
    ora il problema è un'altro, se esco troppo velocemente dell'swf, non fa in tempo a vedere il rollOut...

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.