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

    creare tastiera in flash

    come si fa ad assegnare ad un pulsante la funzione che al rilascio simuli non so il tasto su del mouse?
    so che è sicuro una cavolata ma non ci riesco...
    ho preso un .fla di Pacman che va con la tastiera e volevo creare un mini navgatore in modo che si potesse giocare via mouse,creare i quattrobottoni(le quattro freccine) e fare in modo che funzionino.
    ora mi domandavo se era possibile che un pulsante generi l'effetto keyup e automaticamente lui svolge lo script analogo o se devo rfare tutto lo script per assegnare ai bottoni le stesse funzioni della tastiera.
    grasssie

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    dipende da come sono fatti gli script per il movimento, attualmente... se sono modularizzati in funzioni riutilizzabili, basta trovare a quale funzione corrisponde la pressione di un determinato tasto, e richiamare quella sull'onPress del pulsante corrispondente,
    in ogni caso di sicuro ci saranno delle cose da adattare

    ps. ma non è un po' difficile giocare a PacMan premendo i tasti nello schermo, con il mouse?!

  3. #3
    Premetto: uso Flash da una settimana... ed il mio metodo di apprendimento e quello di modificare i FLA (sopratutto i più basilari) per capire i funzionamenti dei singoli script..ho provato a seguire i tutorial,ma ho capito solo cose generiche.Da adesso inizio ad usare voi

    allora questo è il codice...non penso ce ne sia da altre parti nello script :
    (tranne il fatto che nel root inizializza le variabili)


    onClipEvent (keyDown) {
    with (_root) {
    if (Key.getCode() == Key.UP) nextPacDir = 0;
    else if (Key.getCode() == Key.RIGHT) nextPacDir = 1;
    else if (Key.getCode() == Key.DOWN) nextPacDir = 2;
    else if (Key.getCode() == Key.LEFT) nextPacDir = 3;
    else if (playing && (Key.getCode() == 80 || Key.getCode() == 112)) {
    // "P" - Pause toggle
    if (Ready._visible) { // Unpause the game
    Ready._visible = false;
    Ready.gotoAndStop(1);
    if (notMute) startBGSnd();
    if (!stopped) Pacman.play();
    play();
    }
    else { // Pause the game
    stop();
    Ready.gotoAndStop("Paused");
    Ready._visible = true;
    stopAllSounds();
    Pacman.stop();
    }
    }
    else if (playing && (Key.getCode() == 81 || Key.getCode() == 113 || Key.getCode() == Key.ESCAPE)) {
    // "Q" or ESC - Quit game
    quitting = true;
    stop();
    Ready.gotoAndStop("Quit");
    Ready._visible = true;
    stopAllSounds();
    Pacman.stop();
    }
    else if (quitting && (Key.getCode() == 78 || Key.getCode() == 110)) {
    // "N" - no to quit
    quitting = false;
    Ready._visible = false;
    Ready.gotoAndStop(1);
    if (notMute) startBGSnd();
    if (!stopped) Pacman.play();
    play();
    }
    else if (quitting && (Key.getCode() == 89 || Key.getCode() == 121)) {
    // "Y" - yes to quit
    quit = true;
    play();
    }
    else if (playing && !Ready._visible && (Key.getCode() == 77 || Key.getCode() == 109)) {
    // "M" - Mute toggle
    notMute = !notMute;
    if (notMute) startBGSnd();
    else stopAllSounds();
    }
    else if (Key.getCode() == 76 || Key.getCode() == 108) {
    // "L" - Low quality toggle
    toggleHighQuality();
    }
    }
    }


    non si puo fare un navigatore generico che una volta spinto un tasto simuli il bottone da tastiera? in modo che poi gli sscript non vadano cambiati alla radice?

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    mmh, mi sa che ce n'è dell'altro di codice... verosimilmente un enterFrame continuo che verifica i diversi valori assunti dalla variabile "nextPacDir"... in teoria, ponendo di chiamare i nostri tasti rispettivamente:

    Key.UP -> upArrow
    Key.RIGHT -> rightArrow
    Key.DOWN -> downArrow
    Key.LEFT -> leftArrow

    dovrebbe bastare modificare la parte iniziale del codice che hai postato, in questo modo



    codice:
    onClipEvent (keyDown, mouseDown) {
    with (_root) {
    if (Key.getCode() == Key.UP || isPressed == "upArrow") nextPacDir = 0;
    else if (Key.getCode() == Key.RIGHT || isPressed == "rightArrow") nextPacDir = 1;
    else if (Key.getCode() == Key.DOWN || isPressed == "downArrow") nextPacDir = 2;
    else if (Key.getCode() == Key.LEFT || isPressed == "leftArrow") nextPacDir = 3;
    // (...omissis)
    e assegnare ad ogni pulsante il comando

    codice:
    on(press){
    _root.isPressed = "upArrow"; // o "downArrow" ecc... a seconda del pulsante a cui lo assegni
    }
    ovviamente devi ricordarti di inizializzare la variabile "isPressed", allo stesso modo di come è valorizzata la variabile "nextPacDir"

  5. #5
    inizaimo con un GRAZIE..per lo sbattimento...che chi te lo fa fare...
    risolto questo inizio con le banalità... :
    ci ho provato...(stò impazzendo..eheheh) e fin qui normale...
    ora nel codice datomi da te mi segna un errore per mancata chiusura di una parentesi tonda...e non capisco assolutamente perche..

    2) a quel punto se non sbaglio io creo un nuovo simbolo pulsante gli do le fasi grafiche e lo posiziono su un layer a quel punto avendolo selezionato gli do le proprietà giusto? in questo caso che alla pressione assegni alla variabile ispressed il valore stringa "XXXarrow"

    3) // initVars - initialise these variables on new level or new life
    function initVars() {
    isPressed = "leftArrow";
    pacDir = 3; // Pacman direction: 0=N 1=E 2=S 3=W
    pacPos = 0; // Pacman position relative to the dots/pills (0-2)
    pacX = 14; // Pacman's X maze position
    pacY = 23; // Pacman's Y maze position
    nextX = pacX - 1; // Initially moving west
    nextY = pacY;
    nextPacDir = 3;
    ghKill = 100; // Initial value for killing a Ghost
    ghBlue = 0;
    numEyes = 0; // Number of Eyeball Ghosts
    Pacman.gotoAndStop(1);
    pacStep = 4; // pacStep and pacPosMax goven the speed of Pacman... { pacStep x (pacPosMax + 1) }
    pacPosMax = 2; // ...and must be a multiple of 12, i.e. 4x(2+1) or 2x(5+1)
    pauseCount = 0;


    ----Va bene cosi?



    un altra cosa : questo penso fosse quel che dicevi te riguardo all altro codice... ma credevo fosse ininfluente.. o metto anche qua ||(ispressed=XXXarrow) ??

    // setPacMove - works out and sets Pacman's next move
    function setPacMove(d) {
    with (_root) {
    if (d == 0) { nextX = pacX; nextY = pacY - 1; Pacman._rotation = 90; }
    else if (d == 1) { nextX = pacX + 1; nextY = pacY; Pacman._rotation = 180; }
    else if (d == 2) { nextX = pacX; nextY = pacY + 1; Pacman._rotation = -90; }
    else if (d == 3) { nextX = pacX - 1; nextY = pacY; Pacman._rotation = 0; }
    }
    }

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    1. devi reinserire il codice nello stesso punto da cui l'ho estratto, non ho riscritto tutto il codice per risparmiare spazio nella pagina ma...

    codice:
    onClipEvent (keyDown, mouseDown) {
    with (_root) {
    if (Key.getCode() == Key.UP || isPressed == "upArrow") nextPacDir = 0;
    else if (Key.getCode() == Key.RIGHT || isPressed == "rightArrow") nextPacDir = 1;
    else if (Key.getCode() == Key.DOWN || isPressed == "downArrow") nextPacDir = 2;
    else if (Key.getCode() == Key.LEFT || isPressed == "leftArrow") nextPacDir = 3;
    else if (playing && (Key.getCode() == 80 || Key.getCode() == 112)) {
    // "P" - Pause toggle
    if (Ready._visible) { // Unpause the game
    Ready._visible = false;
    Ready.gotoAndStop(1);
    if (notMute) startBGSnd();
    if (!stopped) Pacman.play();
    play();
    }
    else { // Pause the game
    stop();
    Ready.gotoAndStop("Paused");
    Ready._visible = true;
    stopAllSounds();
    Pacman.stop();
    }
    }
    else if (playing && (Key.getCode() == 81 || Key.getCode() == 113 || Key.getCode() == Key.ESCAPE)) {
    // "Q" or ESC - Quit game
    quitting = true;
    stop();
    Ready.gotoAndStop("Quit");
    Ready._visible = true;
    stopAllSounds();
    Pacman.stop();
    }
    else if (quitting && (Key.getCode() == 78 || Key.getCode() == 110)) {
    // "N" - no to quit
    quitting = false;
    Ready._visible = false;
    Ready.gotoAndStop(1);
    if (notMute) startBGSnd();
    if (!stopped) Pacman.play();
    play();
    }
    else if (quitting && (Key.getCode() == 89 || Key.getCode() == 121)) {
    // "Y" - yes to quit
    quit = true;
    play();
    }
    else if (playing && !Ready._visible && (Key.getCode() == 77 || Key.getCode() == 109)) {
    // "M" - Mute toggle
    notMute = !notMute;
    if (notMute) startBGSnd();
    else stopAllSounds();
    }
    else if (Key.getCode() == 76 || Key.getCode() == 108) {
    // "L" - Low quality toggle
    toggleHighQuality();
    }
    }
    }
    2. esattamente

    3. va bene così

    4. va bene così com'è, non è necessario aggiungere altro

  7. #7
    altra cosa..risultato ora...e che non va piu nemmeno la tastiera..
    (sempre facendo partire il gioco con sta parentesi tonda che manca....)

    **Errore** Scena=Game, livello=Maze, fotogramma=1:Linea 1: È previsto ' ) '
    onClipEvent (keyDown, mouseDown) {

    Totale errori ActionScript: 1 Errori segnalati: 1



    ho creato le quattro freccine assegnato lo script ..

  8. #8
    si dai fin li c'ero arrivato...avevo sostituito solo quella parte di script il resto l'avevo lasciato inalterato...comunque.... anche copiando direttamente tutto...mi da lo stesso errore...

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ah ok, quindi l'errore è lì e non nella sintassi

    scusa ma non ho praticamente mai usato onClipEvent, mi irrita

    infatti, ho provato a vedere se andava.. e non va, è ingestibile, in pratica devi copiare pari pari il codice due volte e in uno mettere solo il "keyDown" e nell'altro solo il "mouseDown"

    abbastanza casereccia come cosa, ma è tanto per non stravolgere troppo il codice che già hai

  10. #10


    va..

    adesso ci proverò con il Tetris...chissa quanto dovrò romperti...

    Grazie...in cambio appena potrò ricambiero con qualcun altro l'attenzione cha hai dato a me

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.