Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di NAP
    Registrato dal
    Jan 2001
    Messaggi
    4,398

    [F8, AS1 o 2] Movimento omnidirezionale di un mc tramite tastiera

    Sì, lo faccio, e funziona con:

    codice:
    onClipEvent (enterFrame) {
    if(Key.isDown(Key.RIGHT))	 
    this._x++;
    if(Key.isDown(Key.LEFT))
    this._x--;
    if(Key.isDown(Key.UP))
    this._y--;
    if(Key.isDown(Key.DOWN))
    this._y++;
    }
    associato direttamente al mc in questione.
    Però non ne ho soltanto uno, ne ho altri da muovere (sempre coi tasti).
    Mi sono detto: se lo facessi da frame, chiamando i mc per nome, otterrei il movimento di tutti i mc, quindi uso "this".
    Qual è il problema? Se premo i tasti si muovono tutti, anche col "this" (ragionandoci meglio, è del tutto ovvio).

    Cosa fare per ottenere il movimento autonomo, volta per volta, dei singoli mc ma sempre tramite i 4 tasti "freccia"?
    A volte la diplomazia va condita con un pizzico di siluri fotonici. (K. Janeway)

  2. #2
    non ho capito bene la cosa...
    supponiamo che hai tanti clip sullo stage che intendi muovere con le frecce
    .... quello che mi chiedo come si fa a capire quale muovere con le 4 fracce della tastiera se ne sono tanti?

    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Il problema è che in qualche modo tu devi selezionare quei clip per poi fargli attivare il controllo sul movimento del singolo clip selezionato. Quindi dovresti far sapere all'utente che può muovere il clip solo dopo averci cliccato sopra.

    Se provi questo codice di esempio in un file vuoto (FP8+AS1) otterrai quello che ti serve, ma solo quando clicchi sul singolo clip questo potrà essere mosso singolarmente.

    Codice PHP:
    MovieClip.prototype.rect = function (whc) {this.beginFill(c100);this.lineTo(w0);this.lineTo(wh);this.lineTo(0h);this.lineTo(00);this.endFill();}
    for (var 
    i=0i<10i++) {
        var 
    mc this.createEmptyMovieClip("mc"+ii);
        
    mc._x Stage.width Math.random();
        
    mc._y Stage.height Math.random();
        
    mc.rect (100100Math.random() * 0xFFFFFF);
        
    mc.useHandCursor false;
        
    mc.onPress = function () {
            
    Selection.setFocus(this);
        }
    }
    var 
    listener = {}
    listener.onKeyDown = function () {
        var 
    mc = eval(Selection.getFocus());
        if (
    Key.isDown(Key.RIGHT)) {
            
    trace ("right");
            
    mc._x+=10;
            
    trace(mc._x);
        }
    }
    Key.addListener(listener); 

  4. #4
    Utente di HTML.it L'avatar di NAP
    Registrato dal
    Jan 2001
    Messaggi
    4,398
    Ciao cresce'
    mi hai risposto ri-facendomi la mia stessa domanda.

    Ciao And80, ti ringrazio per l'attenzione. Sì, la selezione, volta per volta, era in preventivo.
    Lo script funziona perché la creazione del mc vuoto, e il disegno dei quadrangoli tramite il prototiype, si riferiscono, appunto, al mc creato.
    I miei mc sono sullo stage e sono "veri".
    Il nome istanza del mc vuoto-creato è "mc", e io instanzio - ugualmente - "mc" la clip che ho sullo stage, allora si seleziona e si muove. Resta il fatto che, pur instanziando gli altri in progressione numerica (mc0, mc1, mc2...) si selezionano uno per volta ma, partito lo spostamento, si muovono tutti, qualunque sia quello selezionato.
    Ho tentato anche con un mc vuoto, istanziandolo "mc" e ritoccando i percorsi ma... nisba.
    Ho messo il tutto in un mc di nome mc e... si sposta tutto (tutte clip sullo stage).
    Ho tentato mantenendo nello script la creazione del mc vuoto e, ovviamente, eliminando la creazione dei quandrangoli colorati.
    Ho provato a mettere uno script per ogni clip (con nomiIstanza progressivi) ma, selezionata una, si muovono tutte.
    A volte la diplomazia va condita con un pizzico di siluri fotonici. (K. Janeway)

  5. #5
    ciao Nap

    volevo solo una conferma della cosa ....ho fatto una prova con due clip sullo stage ...ovviamente ci devo cliccare su x attivarli e quindi farli muovere con le frecce...

    >Ho provato a mettere uno script per ogni clip (con nomiIstanza progressivi) ma, selezionata una, si muovono tutte.

    .... ho messo lo stesso script su ogni clip ...come hai fatto tu e a me funge....
    magari se mi dai la tua mail in pvt appena rientro in ufficio ti invio l'es ..


    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Penso che il problema possa essere legato all'uso dello stesso clip inserito più volte sullo stage, in caso contrario non si potrebbe scappare dallo script, il nome diverso per ogni clip determina senza dubbio che il comportamento si riferisca solo a quell'mc selezionato.

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ok, ho fatto un test con due mc "copie" con nomi diversi ed ottengo in effetti un comportamento strano, non tanto il fatto che si muovano in contemporanea, quanto il fatto che usando le frecce i clip prendono il focus a caso senza cliccarci sopra

    Mi è bastato eliminarli dal flusso del <tab> e hanno iniziato a funzionare correttamente (basta impostare la proprietà tabEnabled a false).

    Codice PHP:
    mc0.onPress mc1.onPress = function () {Selection.setFocus(this);}
    mc0.tabEnabled mc1.tabEnabled false;
    var 
    listener = {}
    listener.onKeyDown = function () {
        var 
    mc = eval(Selection.getFocus());
        if (
    Key.isDown(Key.RIGHT)) {
            
    mc._x+=10;
        } else if (
    Key.isDown(Key.LEFT)) {
        
    mc._x-=10;
        }
    }
    Key.addListener(listener); 

  8. #8
    beh io avevo fatto un file di prova usando + o - lo stesso cod di NAP

    http://www.leonardoinformatica.it/xforum/mc%5Ffrecce/

    in modo molto meno elegante di come ha fatto and80...ma cmq sembra fungere...

    se vuoi questo es basta che mi fai un fischio...e lo metto su
    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  9. #9
    Utente di HTML.it L'avatar di NAP
    Registrato dal
    Jan 2001
    Messaggi
    4,398
    Ciao crescenzo, ottimo lavoro.
    Perché, invece di mandarmi un esempio, non posti qui il codice che hai usato? Potrebbe servire anche ad altri.

    Grazie and80: il tuo funziona alla stragrande !

    Non vorrei deludervi ma si tratta di un semplice puzzle di 50 tessere, per trascinamento "a mano", ma gli utenti lamentavano la mancanza di una sintonia fine, vale a dire la possibilità di spostare le tessere, volendo, anche di un solo pixel senza doversi far venire il tunnel carpale. Bene, ora ce l'hanno Con lo stesso script potrei - volendo - aggiungere anche la rotazione, ma penso che farebbe diventare il puzzle troppo palloso.
    Combinando i tasti a coppie le frecce funzionano anche in tutte le 8 direzioni. Un bel valore aggiunto !

    Grazie un Tera ad entrambi.
    A volte la diplomazia va condita con un pizzico di siluri fotonici. (K. Janeway)

  10. #10
    Originariamente inviato da NAP
    Ciao crescenzo, ottimo lavoro.
    Perché, invece di mandarmi un esempio, non posti qui il codice che hai usato? Potrebbe servire anche ad altri.
    certo ...solo che a volte mi scoccio di scrivere..

    cmq ho due clip sullo stage con istanza mc1 e mc2 su di essi ho il seguente codice


    onClipEvent (load) {
    passo = 5;
    }
    onClipEvent (enterFrame) {
    if(this.attiva){
    if (Key.isDown(Key.RIGHT)) {
    //trace("destra");
    this.gotoAndStop("dx");
    _x += passo;
    }
    if (Key.isDown(Key.LEFT)) {
    this.gotoAndStop("sx");
    _x -= passo;
    }
    if (Key.isDown(Key.UP)) {
    this.gotoAndStop("su");
    _y -= passo;
    }
    if (Key.isDown(Key.DOWN)) {
    this.gotoAndStop("giu");
    _y += passo;
    }
    if (Key.isDown(Key.LEFT) && Key.isDown(Key.DOWN)) {
    this.gotoAndStop("sxgiu");
    trace("vai");
    }
    if (Key.isDown(Key.RIGHT) && Key.isDown(Key.DOWN)) {
    this.gotoAndStop("dxgiu");
    trace("vai");
    }
    if (Key.isDown(Key.RIGHT) && Key.isDown(Key.UP)) {
    this.gotoAndStop("dxsu");
    trace("vai");
    }
    if (Key.isDown(Key.LEFT) && Key.isDown(Key.UP)) {
    this.gotoAndStop("sxsu");
    trace("vai");
    }
    }
    }

    in pratica x ogni clip ho tanti frame che dovrebbero sinulare tutte le direzioni possibili
    poi sul frame principale

    function disattiva(){
    _root.mc1.attiva=false;
    _root.mc2.attiva=false;
    _root.mc1._alpha=60
    _root.mc2._alpha=60
    }
    disattiva();

    inoltre in ogni clip che sta sullo stage ho un pls sul quale ....quindi dentro a sti clip ..mc1 e mc2 ho un'area sensibile che serve x attivare il clip in questione ed ho questo cod

    on (release) {
    _parent.disattiva();
    this.attiva=true;
    this._alpha=100
    trace(attiva)
    trace(_root.mc1.attiva)
    }



    questo è tutto....
    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

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.