• User

    Oggetti condizioni e spostamenti

    Ciao a tutti,

    io ho un quesito di questo tipo

    devo realizzare una carta geografica della lombardia

    vorrei che l'utente sposasse dei quadrati con dentro i nomi delle città lombarde posizionate in un angolo a parte
    io devo mettere ognuno di questi quadrati dentro la cartina geografica della lombardia

    come posso fare???

    è un progetto che sto realizzando per i bambini di scuola

    grazie


  • User

    Se vuoi usare Flash ho trovato un video che forse potrebbe interessarti.
    [h=1]Cerca su Google o su Youtube "Creating a Drag & Drop Game in Adobe Flash"


  • User

    ciao

    provato a vedere il video..

    utile fino ad un certo punto...

    perchè se la regione che io metto è sbagliata non dovrebbe rimanere li, ma tornare indietro...in quel caso, come posso mettere la condizione???

    io avrei un esempio da me realizzato da inserire per farlo vedere come faccio????

    in questo comando ad esempio

    rosa.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag_3);

    function fl_ClickToDrag_3(event:MouseEvent):void
    {
    rosa.startDrag();
    }

    stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop_3);

    function fl_ReleaseToDrop_3(event:MouseEvent):void
    {
    rosa.stopDrag();
    }

    come faccio a dire che se è giusto rosa rimane dov'è mentre se è sbagliato deve tornare indietro???

    Grazie


  • Super User

    Ciao, supponiamo che movieclip rosa abbia coordinate iniziali x=50 e y=50, lo devi trascinare in un punto preciso dello stage, questo punto preciso deve essere a sua volta un movieclip, nel tuo caso sulla cartina può essere un movieclip con alpha=0 quindi invisibile che chiamo quadro, a questo punto bisogna rilevare se rosa quando viene rilasciato il pulsante del mouse è venuto in contatto con quadro, questo metodo si chiama hitTestObject, se rosa si trova su quadro grazie ad una condizione if ne assume le stesse coordinate, altrimenti ritorna alle coordinate iniziali, ecco il codice:

    
    rosa.x=50
    rosa.y=50
    rosa.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag_3);
    
    
    function fl_ClickToDrag_3(event:MouseEvent):void
    {
    rosa.startDrag();
    }
    
    
    stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop_3);
    
    
    function fl_ReleaseToDrop_3(event:MouseEvent):void
    {
    rosa.stopDrag();
    if(rosa.hitTestObject(quadro)){rosa.x=quadro.x,rosa.y=quadro.y}
    else{rosa.x=50,rosa.y=50}
         
    }
    
    

  • User

    Ciao, grazie della risposta

    quindi, la mia cartina dove voglio posizionare gli oggetti lo trasformo in un movie clip giusto???

    ok per x e y, ma alpha=0 come lo imposto???

    io come inizio di rosa è x 24,60 e y 269

    scusa se ti faccio queste domande ma è la prima volta che mi occupo dei trascinamenti.... 🙂


  • Super User

    Se ho capito bene quello che vuoi realizzare la cartina non occorre che sia un movieclip, può essere una bitmap o un vettoriale perchè è solo uno sfondo, tu posizioni la cartina nel livello 0 come sfondo, ne livello 1 metti un movieclip che puo avere la forma di un rettangolo con alpha=0 ad esempio su Pavia o Milano e sul livello 2 i movieclip col nome delle città.
    per impostare alpha=0 ```
    nomeIstanza.aplha=0


  • User

    ciao, quindi se ho capito bene devo:

    importare dentro lo stage cartina.gif al livello 0

    dopo mi creo livello 1 e metto un cerchio sopra alla città es: Milano che lo convertirò in moviclip e chiamerò milano

    nel livello 2 a questo punto mi creo un altro cerchio ma con dentro il nome della città milano...questo lo convertirò in moviclip chiamandolo rosa

    e nel'action mettero questo codice

    milano.alpha=0rosa.x=24.60rosa.y=269.00rosa.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag_3);function fl_ClickToDrag_3(event:MouseEvent):void{rosa.startDrag();}stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop_3);function fl_ReleaseToDrop_3(event:MouseEvent):void{rosa.stopDrag();if(rosa.hitTestObject(quadro)){rosa.x=quadro.x,rosa.y=quadro.y}else{rosa.x=24.60,rosa.y=269} }giusto????


  • User

    Ops??!!! il codice si è unito tutto...

    scusa come faccio a fartelo vedere normale???


  • User
    
    milano.alpha=0
    rosa.x=24.60
    rosa.y=269.00
    rosa.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag_3);
    
    
    function fl_ClickToDrag_3(event:MouseEvent):void
    {
    rosa.startDrag();
    }
    
    
    stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop_3);
    
    
    function fl_ReleaseToDrop_3(event:MouseEvent):void
    {
    rosa.stopDrag();
    if(rosa.hitTestObject(quadro)){rosa.x=quadro.x,rosa.y=quadro.y}
    else{rosa.x=24.60,rosa.y=269.00}
         
    }
    
    

  • Super User

    Il codice va scritto dentro i tag code: aperta parentesi quadra scrivi code e chiudi, scrivi il codice, apri quadra scrivi /code e chiudi.


  • Super User

    Be no scusa a qusto punto la stringa:

    
    
    if(rosa.hitTestObject(quadro)){rosa.x=quadro.x,rosa.y=quadro.y}
    
    

    devi modificarla così

    
    if(rosa.hitTestObject(milano)){rosa.x=milano.x,rosa.y=milano.y}
    
    

    rosa intercetterà il movieclip milano giusto?


  • User

    Quindi metterò

    
    
    if(rosa.hitTestObject(milano)){rosa.x=milano.x,rosa.y=milano.y}
    
    

    rosa intercetterà il movieclip milano giusto?[/QUOTE]

    si..

    l'altra parte di codice in cui settavo milano era giusto, vero???


  • Super User

    Si mi sembra giusto non ti resta che testare.


  • User

    Stasera, provo, in quanto adesso non ho Flash a portata...

    Grazie

    Ti faro sapere


  • Super User

    :ciauz:


  • User

    mi da errori

    Scene 1, Layer 'Layer 3', Frame 1, Line 3 1120: Access of undefined property rosa.
    Scene 1, Layer 'Layer 3', Frame 1, Line 2 1120: Access of undefined property rosa.
    Scene 1, Layer 'Layer 3', Frame 1, Line 1 1120: Access of undefined property milano.
    Scene 1, Layer 'Layer 3', Frame 1, Line 20 1120: Access of undefined property rosa.
    Scene 1, Layer 'Layer 3', Frame 1, Line 20 1120: Access of undefined property rosa.
    Scene 1, Layer 'Layer 3', Frame 1, Line 19 1120: Access of undefined property milano.
    Scene 1, Layer 'Layer 3', Frame 1, Line 19 1120: Access of undefined property rosa.
    Scene 1, Layer 'Layer 3', Frame 1, Line 19 1120: Access of undefined property milano.
    Scene 1, Layer 'Layer 3', Frame 1, Line 19 1120: Access of undefined property rosa.
    Scene 1, Layer 'Layer 3', Frame 1, Line 19 1120: Access of undefined property milano.
    Scene 1, Layer 'Layer 3', Frame 1, Line 19 1120: Access of undefined property rosa.
    Scene 1, Layer 'Layer 3', Frame 1, Line 18 1120: Access of undefined property rosa.
    Scene 1, Layer 'Layer 3', Frame 1, Line 9 1120: Access of undefined property rosa.

    non capisco per quale ragione

    
    
    milano.alpha=0
    rosa.x=17
    rosa.y=170
    rosa.addEventListener(MouseEvent.MOUSE_DOWN, fl_ClickToDrag_3);
    
    
    
    
    function fl_ClickToDrag_3(event:MouseEvent):void
    {
    rosa.startDrag();
    }
    
    
    
    
    stage.addEventListener(MouseEvent.MOUSE_UP, fl_ReleaseToDrop_3);
    
    
    
    
    function fl_ReleaseToDrop_3(event:MouseEvent):void
    {
    rosa.stopDrag();
    if(rosa.hitTestObject(milano)){rosa.x=milano.x,rosa.y=milano.y}
    else{rosa.x=17,rosa.y=170}
    
    
    

  • User

    ho il livello 0 in cui ho importato la foto
    nel livello 1 ho creato il quadrato che ho convertito in movie clip chiamandolo Milano
    nel livello 2 ho creato un altro quadrato che che ho convertito in movie clip chiamandolo rosa e poi ho inserito quell'azione...

    ma niente mi da quella lista di errori

    cosa sbaglio??

    ho pensato che fosse perche avevo scritto Milano in minuscolo e non in maiuscolo ma non è cosi...


  • Super User

    Ma hai messo il nome istanza nell'apposito campo della finestra proprietà di Flash?


  • User

    Eh no 😢😄

    adesso funziona...

    nel caso in cui l'alunno indovini la posizione far comparire anche una scritta in un rettangolo a parte con scritto "DATO ERRATO" come posso fare????


  • Super User

    E' semplice, fai un movieclip, che avrà il primo frame, senza scritta e con uno stop() mentre ne secondo frame la scritta dato errato, poi lo mandi in play nella condizione if.