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

    Duplicare movieclip e actionscript insieme

    Ciao a tutti,

    Sono qui con una domanda che per quanto abbia lungamente cercato in rete, non ho trovato alcuna risposta.

    E' possibile copiare un movieclip (attraverso actionscript) con le azioni che questo stesso movieclip ha scritte su di se medesimo?

    Per farmi capire, io ho un peso (il movieclip in questione) che, draggato su un hitTest di una leva di primo genere la fa oscillare a destra o a sinistra.
    Quello di cui ho bisogno, è un comando che permetta all'utente di questo filmato di poter avere un numero infinito di pesi da poter piazzare sulla leva (senza riempire inutilmente lo stage, come sto facendo io adesso).
    L'azione che fa oscillare la leva è scritta su questi "pesi/movieclip" che una volta entrati in contatto con le varie hitArea della leva (una per ogni tacca) scatenano l'oscillazione del braccio.

    Come posso fare?
    Il comando duplicateMovieClip resetta il movieclip stesso e non consente il trasferimento dell'actionscript dal vecchio al nuovo.

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    o cambi metodo e scrivi il codice dei clip direttamente in timeline, oppure al posto di duplicateMovieClip utilizzi attachMovie e attacchi il clip che a questo punto sarà presente solo in libreria e richiamato all'occorrenza

    in ogni caso, anche nella seconda ipotesi, il codice non potrà più essere collegato direttamente al clip, ma ci si dovrà trovare dentro, in un frame

  3. #3
    La cosa migliore è creare una classe che contiene tutti i metodi specifici del movieclip da duplicare.
    La classe va asssegnata direttamente all'oggetto in libreria, attraverso il linkage(tasto destro sul mc in libreria).
    E nel momento in cui devi duplicare il movieclip, lo richiami con attachMovie anzichè usando il duplicateMovieClip.
    Così il movieclip creato avrà gli stessi metodi del suo originale.

  4. #4
    Grazie a tutti e due!
    Non è che mi potreste indicare (per non starvi a scassare con una serie infinita di domande) una buona risorsa online sull'OOP, che a quanto ho capito, rappresenta il metodo migliore per risolvere il mio problema?
    Qualcosa che parta da zero, insomma...
    Grazie ancora per l'aiuto.

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    mi permetto di dissentire da giegi, imho la cosa è fattibilissima anche senza usare classi personalizzate posso farti un esempio semplicissimo di quello che intendo

    poniamo su flash di creare un MovieClip "mc0" che contenga al suo interno un rettangolo e un campo di testo dinamico con nome di istanza "testo", scopo ultimo dell'esempio è quello di duplicare una serie di volte il nostro clip e assegnare un testo ad ogni nuovo clip che fungerà anche da pulsante, poniamo di salvare il nostro testo di ogni pulsante in un array ed utilizzare quest'ultimo per creare un ciclo di duplicazione e posizionamento dei nuovi clip, questo sarebbe il codice

    codice:
    // creo un array con tutti i testi che devono essere scritti nel textfield di ogni pulsante
    var nomi:Array = new Array("home", "where", "when", "how", "why");
    // assegno il primo testo al clip/pulsante nello stage
    mc0.testo.text = nomi[0];
    // ora con un ciclo duplico e posiziono i clip che saranno gli altri pulsanti
    for(var i = 0; i < nomi.length; i++){
    	// con quest'if escludo il primo risultato dell'array, quello già assegnato
    	if(i != 0){
    		mc0.duplicateMovieClip("mc"+i, i, {_x:eval("mc"+(i-1))._width+eval("mc"+(i-1))._x)});
    		var path:MovieClip = eval("mc"+i);
    		path.testo.text = nomi[i];
    	}
    }
    // ora posso assegnare le azioni ad ogni clip sempre da timeline, ad esempio per il primo clip assegno
    mc0.onRelease = function(){
    	trace(this._name+" è stato cliccato");
    }
    mc0.onRollOver = function(){
    	trace(this._name+" ha subito un rollover");
    }
    mc0.onRollOut = function(){
    	trace(this._name+" ha subito un rollout");
    }
    // così per gli altri clip che avranno un nome progressivo quindi mc1, mc2, mc3 ecc...
    questo è solo uno dei mille modi di agire in questi casi, in ogni caso io credo che sia la cosa migliore abituarsi ad utilizzare i MovieClip anche come pulsanti, in modo da poterne sfruttare le caratteristiche che invece i Button (pulsanti) non hanno...

  6. #6
    Actionscript OOP:

    http://www.flashscript.biz/MX2004/OO...l/lesson1.html

    http://www.gotoandlearn.com/




    così al volo........
    Ma ti consiglio di guardare sul p2p, qualche ebook cercando "oop actionscript" o object oriented actionscript"


    Ciao.

  7. #7
    Utente di HTML.it L'avatar di byaur
    Registrato dal
    Aug 2004
    Messaggi
    1,061
    concordo con and80.
    le classi si possono utilizzare ma dipende molto dallo scopo e dalla tipologia di lavoro che si usa, e possono essere "scavalcate" usando artefizi o cmq utilizzando gli innumerevoli altri strumenti che AS mette a disposizione, uno dei quali, come dice sempre giustamente and80 , è utilizzare il mc come pulsante associandogli le funzioni-handler di gestione degli eventi del mouse...
    Chi di noi non vorrebbe
    sollevare il velo sotto cui sta nascosto il
    futuro...
    David Hilbert

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.