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

    onRelease su mc come proprietà della classe

    Oibò, dove sbaglio?
    image_mc.onRelease non traccia nulla... perchè?!?!

    codice:
    class ImageFocus{
    		// properties
    	// -----------------------------------------------------------------------------------
    	private var image_mc:MovieClip;
    	// constructor
    	// -----------------------------------------------------------------------------------
    	public function ImageFocus(target:MovieClip, imm:String) {
    	trace("costruttore di ImageFocus")
    	image_mc = target.createEmptyMovieClip("image_mc_istanza", 1)
    	image_mc.loadMovie(imm)
    	image_mc.onRelease=function(){
    		trace("lascia")
    	}
    	}
    }

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    è un errore comune,

    il loadMovie è un comando "distruttivo", ossia al momento di caricare il file esterno sul clip preposto, elimina ogni cosa contenuta nel clip, compresi proprietà, metodi ed eventi

    ciò significa che per assegnare l'onRelease al clip, devi prima saspettare che l'immagine sia stata caricata, altrimenti l'assegnazione del comando viene semplicemente ignorata

    fortunatamente esiste un trucchetto piuttosto semplice che ci evita di pensare al fatto che occorra un preload al nostro caricamento, e consiste sostanzialmente nella creazione di un ulteriore clip nidificato all'interno di quello a cui vogliamo assegnare l'evento, ed utilizzare appunto il clip creato, per caricarci all'interno l'immagine, salvando di conseguenza i dati del clip principale

    Codice PHP:
    class ImageFocus{
            
    // properties
        // -----------------------------------------------------------------------------------
        
    private var image_mc:MovieClip;
        
    // constructor
        // -----------------------------------------------------------------------------------
        
    function ImageFocus(target:MovieClipimm:String) {
            
    trace("costruttore di ImageFocus")
            
    image_mc target.createEmptyMovieClip("image_mc_istanza"1)
            
    image_mc.createEmptyMovieClip("loader"1);
            
    image_mc["loader"].loadMovie(imm)
            
    image_mc.onRelease=function(){
                
    trace("lascia")
            }
        }


  3. #3
    Originariamente inviato da and80
    cut
    and80 mito, era proprio il tipo di risposta che speravo leggere, avevo già risolto assegnando l'azione a target ma così è decisamente meglio
    il mio obiettivo nei prox due mesi è capire davvero come funzionane le cose nel dettaglio e imparare a scrive un codice pulito e efficiente... tornerò spesso a fare domande di tal genere, legate magari ad un esempio pratico ma finalizzate e comprendere la teoria

    continuo a costruire la classe e poi la posto per tutti

  4. #4
    ecco una versione finale abb soddisfacente
    che ne dite dell'implementazione ottimizzata dei listener? (tnx to marco)

    codice:
    class ImageFocus {
    	// properties
    	// -----------------------------------------------------------------------------------
    	private static var image_mc:MovieClip;
    	private static var perc_focus_on:Number = 150;
    	private static var perc_focus_off:Number = 100;
    	private static var follow_active:Boolean = false;
    	// constructor
    	// -----------------------------------------------------------------------------------
    	public function ImageFocus(target:MovieClip, imm:String) {
    		image_mc = target.createEmptyMovieClip("image_mc_istanza", 1);
    		image_mc.createEmptyMovieClip("loader", 1);
    		image_mc["loader"].loadMovie(imm);
    		// // listener 
    		Mouse.addListener(this)
    	}
    	// methods
    	// -----------------------------------------------------------------------------------
    	public function onMouseDown():Void {
    		if (!follow_active) {
    				follow_active = true;
    				focus_on();
    				image_mc.onEnterFrame = function() {
    					follow_mouse();
    				};
    			}
    	}
    	public function onMouseUp():Void {
    			follow_active = false;
    			focus_off();
    			delete (image_mc.onEnterFrame);
    	}
    	//
    	public static function focus_on():Void {
    		image_mc.scaleTo(perc_focus_on, 3);
    	}
    	public static function focus_off():Void {
    		image_mc.scaleTo(perc_focus_off, 1);
    		image_mc.tween("_x", 0, 1);
    		image_mc.tween("_y", 0, 1);
    	}
    	public static function follow_mouse():Void {
    		image_mc._x -= (image_mc._x+(_xmouse-image_mc._width/2))/7;
    		image_mc._y -= (image_mc._y+(_ymouse-image_mc._height/2))/7;
    	}
    }
    // -----------------------------------------------------------------------------------
    // USAGE
    // -----------------------------------------------------------------------------------
    /*
    #include "lmc_tween.as"
    
    var creaFocus:ImageFocus;
    creaFocus = new ImageFocus(movieContenitore, "immagine.png")
    //
    dove "movieContenitore" è un clip posizionato sullo stage e "immagine.png" risiede nella stessa cartella del fla
    */

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.