Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    13

    [AS3] Problemi di instaziamento delle classi

    Salve a tutti , ho provato ad instanziare una classe dentro un'altra all'interno dello stesso package, le due classi sono su due file .as diversi nella stessa directory.
    Quando istanzio la classe BgControls dentro la classe Game il compiler mi da questo errore:

    1046: Type was not found or was not a compile-time constant: Event.

    Se la classe BgControls al posto di essere una classe esterna è un metodo della classe Game tutto funziona ma io preferirei lavorare con varie classi separate.
    Non sono esperto di actionscript e questo passaggio da as2 ad as3 non mi risulta del tutto semplice.
    Qui di seguito posto il codice (premetto che la classe Background è contenuta nella libreria dello stage):

    nome del file Game.as:

    package games {
    import flash.display.*;
    import flash.events.*;
    import flash.text.*;
    import fl.transitions.*;
    import flash.net.*;
    import flash.text.*;
    import flash.ui.*;
    import flash.utils.*;

    public class Game extends MovieClip{
    public function Game():void{
    var backz = new BgControls;

    }
    }
    }


    ----------------------------------------------------------
    nome file BgControls.as:

    package games {
    internal class BgControls {
    var bg:Background = new Background(); // classe contenuta nellla libreria dello stage

    // init
    public function BgControls():void{
    addChild(bg);
    bg.x=0;
    bg.y=-550;
    bg.addEventListener(Event.ENTER_FRAME, bgMove);
    }


    // background move
    public function bgMove(event:Event):void{
    if (event.target.y<0)
    event.target.y+=5;
    else
    event.target.y=-1100;
    }


    }
    }

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    L'errore c'è perchè non incorpori la classe Event nella classe BgControls.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    13
    Grazie per la risposta,
    ho importato per sicurezza tutte le classi che ho dentro la classe Game, anche se in teoria avevo letto che una volta importate le varie classi nel package principale, gli altri file dovrebbero già ereditarle senza bisogno di importarle ogni volta, ma questo è quello che ho letto e non so se effettivamente funziona cosi.
    Adesso però il compilatore mi da un nuovo errore:

    1180: Call to a possibly undefined method addChild.

    Non posso eseguire l'addChild nel costruttore della classe?

    Ecco il nuovo codice:

    package games {
    import flash.events.*;
    import flash.display.*;
    import flash.text.*;
    import fl.transitions.*;
    import flash.net.*;
    import flash.text.*;
    import flash.ui.*;
    import flash.utils.*;

    internal class BgControls {
    var bg:Background = new Background();

    // init
    public function BgControls():void{
    addChild(bg);
    bg.x=0;
    bg.y=-550;
    bg.addEventListener(Event.ENTER_FRAME, bgMove);
    }


    // background move
    public function bgMove(event:Event):void{
    if (event.target.y<0)
    event.target.y+=5;
    else
    event.target.y=-1100;
    }


    }
    }

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    La classe che crei, BgControls, non estende una classe di visualizzazione (Sprite o MovieClip), perciò quando cerchi di usare il metodo addChild su quella classe, ti dice giustamente che non esiste.
    A quale elemento di visualizzazione vuoi agganciare il clip "bg"?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    13
    grandissimo!!!! era quello l'errore! BgControls doveva estendere MovieClip!
    Grazie mille finalmente posso proseguire!

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.