Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Bournt
    Registrato dal
    Apr 2010
    Messaggi
    14

    Funzione Che Faccia Riferimento A Una Classe Di Istanze Movieclip

    Ciao ragazzi ho un problema che probabilmente risulterà anche molto semplice per voi.

    Sul web non sono riuscito a trovare niente di utile.

    Premetto che non sono un mago di flash ma me la cavicchio a grandi linee.

    Dunque ora come ora starei facendo pratica sul disegno di flashgame semplici per appropriarmi dei concetti.

    Ho un semplice gioco sparo i cui "proiettili" sono istanze di movie clip. Uso as2 quindi con il semplice duplicateMovieclip risolvo tutti i problemi. Ho dei bersagli che si creano random sullo stage e che si muovono lentamente verso il basso.

    Il mio problema è che per come riesco a posizionare gli script io, i proiettili colpiscono il primo bersaglio e quindi avviano la funzione che voglio (scoppiare e sparire) ma gli altri bersagli che vengono creati dopo non subiscono nessun effetto.

    In poche parole vorrei sapere, in modo semplice e chiaro più che altro, come generalizzare la funzione contenuta nello script dei proiettili alla classe del Movieclip bersaglio e non alla singola istanza del bersaglio.

    O comunque un sistema che abbia lo stesso risultato.

    Vi ringrazio e attendo una vostra risposta.

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Senza un minimo di codice non è semplice risponderti, la metto in maniera molto semplice, ti basterà creare una funzione "prototipo" che poi assocerai ad ogni movieclip dopo averlo duplicato.

    La forma delle funzioni prototipo è questa:

    Codice PHP:
    MovieClip.prototype.funcName = function () {
        
    // tutte le azioni da far eseguire al clip
        // ricordati che dentro questa funzione puoi/devi richiamare il clip che la esegue con "this"
        // ad esempio:
        
    trace(this);
    }
    // mettiamo di avere un clip "prova" a cui associamo la funzione di sopra
    prova.funcName(); // otterremo nel pannello output la scritta _level0.prova o simile 
    Spero che sia chiaro, saluti!

  3. #3
    Utente di HTML.it L'avatar di Bournt
    Registrato dal
    Apr 2010
    Messaggi
    14
    Originariamente inviato da and80
    Senza un minimo di codice non è semplice risponderti, la metto in maniera molto semplice, ti basterà creare una funzione "prototipo" che poi assocerai ad ogni movieclip dopo averlo duplicato.

    La forma delle funzioni prototipo è questa:

    Codice PHP:
    MovieClip.prototype.funcName = function () {
        
    // tutte le azioni da far eseguire al clip
        // ricordati che dentro questa funzione puoi/devi richiamare il clip che la esegue con "this"
        // ad esempio:
        
    trace(this);
    }
    // mettiamo di avere un clip "prova" a cui associamo la funzione di sopra
    prova.funcName(); // otterremo nel pannello output la scritta _level0.prova o simile 
    Spero che sia chiaro, saluti!

    ciao, ti ringrazio per l'attenzione però non mi è chiaro scusami. Va benissimo se mi spieghi con il codice però visto che il problema è abbastanza specifico ti chiederei il favore di spiegarmi il concetto rapportato con il mio problema altrimenti non riesco a capire.

    Cioè prima di tutto questa funzione va applicata al frame dello stage o all'istanza della "pallottola" o del "bersaglio" ?

    Seconda domanda se i clip bersaglio o proiettili vengono creati continuamente e quindi hanno nomi progressivi come posso associarla a ognuno di loro?
    Per dire se in un secondo mi partono 100 "proiettili" come associo la funzione ad ognuno?

    Non è un problema abbastanza comune quello che propongo? cioè non c'è la classica soluzione che semplicemente io non conosco?

    Ciao grazie ancora

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non posso darti una spiegazione specifica se non ho informazioni specifiche, infatti te l'ho scritto che la cosa sarebbe stata generica non avendo a disposizione nulla di fatto del tuo lavoro.
    Una funzione come quella è opportuno metterla sul primo frame della timeline principale poiché la particella "prototype" serve ad estendere la classe MovieClip con un nuovo metodo che poi sarà richiamabile da ogni MovieClip.

    Per la seconda domanda, ancora una volta, dipende da come fai la duplicazione, usare il prototipo serve solo ad evitarti di inserire per ogni pulsante duplicato lo stesso codice.

    Non è un problema abbastanza comune quello che propongo? cioè non c'è la classica soluzione che semplicemente io non conosco?
    Sì infatti, ma non capisco questa affermazione che senso abbia nel discorso. Vuoi dire che il tuo è un discorso generico che quindi ha una sola soluzione? Non lo è...
    Un problema generico con singola soluzione è come faccio a far partire la timeline di un movieclip?, la risposta sarà con play().
    Nel tuo caso ci sono diverse possibilità, legate principalmente al modo in cui hai lavorato tu.

  5. #5
    Utente di HTML.it L'avatar di Bournt
    Registrato dal
    Apr 2010
    Messaggi
    14
    Originariamente inviato da and80 Non posso darti una spiegazione specifica se non ho informazioni specifiche, infatti te l'ho scritto che la cosa sarebbe stata generica non avendo a disposizione nulla di fatto del tuo lavoro.

    Per la seconda domanda, ancora una volta, dipende da come fai la duplicazione, usare il prototipo serve solo ad evitarti di inserire per ogni pulsante duplicato lo stesso codice.


    Sì infatti, ma non capisco questa affermazione che senso abbia nel discorso. Vuoi dire che il tuo è un discorso generico che quindi ha una sola soluzione? Non lo è...
    Un problema generico con singola soluzione è come faccio a far partire la timeline di un movieclip?, la risposta sarà con play().
    Nel tuo caso ci sono diverse possibilità, legate principalmente al modo in cui hai lavorato tu.
    Scusami eh quello che intendo è che credo sia uno dei problemi tra i più frequenti per i disegnatori di games in flash, ok che probabilmente voi utilizzate flash per altro però supponevo fosse una cosa frequente lo stesso.

    Comunque ok già mi è utile sapere che prototype inserito in quel modo trasmette in automatico la funzione a tutti i movie clip ma quello che ti chiedevo era di spiegarmi più chiaramente ossia:

    MovieClip (intendi l'istanta del Movieclip o va inserito così come me lo hai scritto?)

    .prototype (che cosa sarebbe visto che non ne avevo mai sentito parlare?)



    insomma chiedevo di spiegarmi la cosa senza dar per scontato tutta la teoria più complessa.

    Ora provo a rendere più chiaro il mio problema.

    Ho un movieclip, alla pressione di un tasto duplica un piccolo movieclip (proiettile) e lo orienta verso la direzione (grazie a seno e coseno) e con l'inclinazione giusta rapportata al movieclip principale che lo lancia.

    un semplice codice inserito in un movieclip invisibile che fa da stepper (cioè richiama le funzioni on enterframe). li al suo interno c'è l'evento che verifica la pressione del tasto che duplicherà la movieclip (proiettile) la cui prima copia si trova fuori dallo stage proprio per essere duplicata.

    all'interno della prima movieclip pallottola fuori dallo stage c'è il codice che ne regola l'inclinazione la velocità e la direzione.

    al suo interno ho messo anche la verifica dell'hitobject contro il bersaglio e in quel caso attua la rimozione di entrambi.

    il problema è che funziona solo con il primo bersaglio, gli altri randomizzati non vengono considerati nell hitobject.

    questo perchè l'evento hitobject si riferisce solo all'istanza del primo bersaglio e non riesco ad estenderla alla classe bersaglio (sempre che si dica così)...

    Vorrei sapere come far si che qualunque pallottola facesse rimuovere qualunque bersaglio al momento dell'impatto.

    Spero stavolta di aver reso l'idea.

    Ringrazio per l'attenzione e spero in una risposta.

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da Bournt
    Scusami eh quello che intendo è che credo sia uno dei problemi tra i più frequenti per i disegnatori di games in flash, ok che probabilmente voi utilizzate flash per altro però supponevo fosse una cosa frequente lo stesso.

    Comunque ok già mi è utile sapere che prototype inserito in quel modo trasmette in automatico la funzione a tutti i movie clip ma quello che ti chiedevo era di spiegarmi più chiaramente ossia:

    MovieClip (intendi l'istanta del Movieclip o va inserito così come me lo hai scritto?)

    .prototype (che cosa sarebbe visto che non ne avevo mai sentito parlare?)



    insomma chiedevo di spiegarmi la cosa senza dar per scontato tutta la teoria più complessa.
    Ok, ora è chiaro. La funzione va scritta esattamente come te l'ho scritta io, in pratica è una propagazione della classe alla quale si aggiunge un altro metodo, quindi MovieClip.prototype è un punto fermo della dichiarazione, poi ci puoi aggiungere una proprietà o una funzione, come nel nostro caso.
    Perdonami ma non trovo modo più semplice di descriverti la cosa. Attendiamo che passi qualcun altro che lo sappia spiegare meglio.
    Per capire meglio cosa sia "prototype" puoi provare a vedere sulla guida.


    Originariamente inviato da Bournt
    Ho un movieclip, alla pressione di un tasto duplica un piccolo movieclip (proiettile) e lo orienta verso la direzione (grazie a seno e coseno) e con l'inclinazione giusta rapportata al movieclip principale che lo lancia.

    un semplice codice inserito in un movieclip invisibile che fa da stepper (cioè richiama le funzioni on enterframe). li al suo interno c'è l'evento che verifica la pressione del tasto che duplicherà la movieclip (proiettile) la cui prima copia si trova fuori dallo stage proprio per essere duplicata.

    all'interno della prima movieclip pallottola fuori dallo stage c'è il codice che ne regola l'inclinazione la velocità e la direzione.

    al suo interno ho messo anche la verifica dell'hitobject contro il bersaglio e in quel caso attua la rimozione di entrambi.

    il problema è che funziona solo con il primo bersaglio, gli altri randomizzati non vengono considerati nell hitobject.

    questo perchè l'evento hitobject si riferisce solo all'istanza del primo bersaglio e non riesco ad estenderla alla classe bersaglio (sempre che si dica così)...

    Vorrei sapere come far si che qualunque pallottola facesse rimuovere qualunque bersaglio al momento dell'impatto.

    Spero stavolta di aver reso l'idea.

    Ringrazio per l'attenzione e spero in una risposta.
    Il tutto era già chiaro dal primo messaggio, ma continuo a dirti che senza vedere un minimo di codice, continueremo a scrivere un messaggio dietro l'altro ripetendoci le stesse cose.

    Saluti

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.