Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405

    [AS 3.0]Creare nuove classi

    Come faccio a sviluppare un progetto tipo java, creando nuove classi, estendendo quelle già presenti ecc ecc?
    In poche parole, come creo e utilizzo una classe personale?
    Forum Additive monitora le discussioni più importanti!

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    l'impostazione è bene o male sempre uguale ed è così

    Codice PHP:
    package {
        public class 
    NomeClasse {
            public function 
    NomeClasse () {

            }
        }

    in cui devi sempre inserire il package, poi devi dichiarare pubblica la classe per usarla nei filmati e poi dichiarare il costruttore, ugualmente pubblico

    per estendere una classe specifica devi importarla e poi usare "extends" per estenderla, ad esempio per estendere la classe di visualizzazione "MovieClip", fai

    Codice PHP:
    package {
        
    import flash.display.MovieClip;
        public class 
    NomeClasse extends MovieClip {
            public function 
    NomeClasse () {

            }
        }

    tornando al package, va sempre inserito anche se è vuoto, ma serve principalmente in quei casi in cui le tue classi personalizzate si trovano in cartelle specifiche diverse da quella del fla in cui vengono usate

    ad esempio le mie classi personali si trovano dentro una cartella "__CLASSI" che ho impostato sulle preferenze di flash, per dargli la ricerca quando si pubblica il file (Menu Modifica > Preferenze > Actionscript > Actionscript 3.0 Settings)



    dentro "__CLASSI" c'è una cartella "org" che ne contiene una "and" che contiene altre cartelle con classi dentro, ad esempio una cartella "utils" in cui c'è una classe "Com"
    il codice di base per la classe Com sarà:

    Codice PHP:
    package org.and.utils {
        public class 
    Com {
            
        }

    che in as2 equivaleva a
    Codice PHP:
    class org.and.utils.Com {


    ora, tornando alla scrittura e all'uso di una classe personalizzata, pensiamo di scrivere una classe "Rect" che rappresenta la creazione di un rettangolo
    creiamo la classe e poi la salviamo dentro un file con estensione .as e che abbia esattamente il nome della classe che rappresenta (file "Rect.as")

    Codice PHP:
    package {
        
    import flash.display.MovieClip
        
    public class Rect extends MovieClip {
            public function 
    Rect(n:String=null,w:Number=100,h:Number=100,b:uint=0,bCol:uint=0,c:uint=0) {
                
    != null name null;
                var 
    border = (== undefined b)
                
    graphics.lineStyle(borderbCol1false"normal""none""miter"255);
                
    graphics.beginFill(c);
                
    graphics.drawRect(0,0,w,h);
                
    graphics.endFill();
            }
        }

    mettiamo questo file nella stessa cartella del fla in cui la useremo e creiamo un'istanza di Rect, poi la aggiungiamo allo stage

    Codice PHP:
    var r:Rect = new Rect();
    addChild(r); 
    provando il filmato vedremo in alto a sinistra un quadrato da 100x100 px
    questo perchè non abbiamo specificato nessun parametro e la classe ha usato quelli di default che gli abbiamo passato nella costruzione della classe
    mentre se facciamo

    Codice PHP:
    var r:Rect = new Rect(""30020010xFF00000x00FF00);
    addChild(r); 
    avremo sullo stage un rettangolo 300x200 px con un bordo rosso da un pixel e sfondo verde

    in pratica abbiamo creato una classe che estende la classe MovieClip e che automaticamente disegna dentro la stessa un rettangolo delle dimensioni e colori impostati da noi con una sola riga di codice

  3. #3
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405
    Perfetto sei stato davvero chiarissimo!
    Mi piace sempre di più questo As 3.0
    Grazie ancora
    Forum Additive monitora le discussioni più importanti!

  4. #4
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405
    Una domandina, se voglio far cercare le classi da me create sempre dentro alla cartella code, ma del progetto su cui lavoro come faccio?
    Ad esempio, lavoro al project1 quindi salvo le classi relative a questo progetto in project1/code, si può fare in modo che le classi vengano cercate automaticamente in quella cartella?
    Forum Additive monitora le discussioni più importanti!

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    credo che ti basti creare la classe usando come package code

    Codice PHP:
    package code {
    public class 
    NomeClasse {

    }


  6. #6
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405
    Ho provato ma non mi trova la classe.
    Forum Additive monitora le discussioni più importanti!

  7. #7
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405
    Ho creato una classe di prova
    Codice PHP:
    package code{
        public class 
    MainFrame{
            public function 
    MainFrame(title:String){
                
    trace(title);
            }
        }

    e l'ho salvata nella cartella code con nome MainFrame.as
    La cartella code si trova nela directory del mio progetto.
    Ma quando compilo dice che non trova MainFrame.
    Forum Additive monitora le discussioni più importanti!

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ho provato anche io e mi funziona correttamente

    mi confermi la struttura?

    cartella principale
    - file "test.fla"
    - cartella "code"
    -- file Test.as

    contenuto di Test.as
    Codice PHP:
    package code {
        public class 
    Test {
            public function 
    Test () {
                
    trace("la classe funziona");
            }
        }

    contenuto di test.fla
    Codice PHP:
    var t:Test = new Test(); 

  9. #9
    Utente di HTML.it L'avatar di Linusss
    Registrato dal
    Sep 2002
    Messaggi
    405
    Si confermo, ma non funziona a me
    mmm dove può essere l'inghippo?

    -progetto1
    --progetto1.fla
    --code
    ---Test.as

    Ma non me la trova
    Forum Additive monitora le discussioni più importanti!

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ma non è che stai usando Test.as come document class?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.