2010-11-17 21 views
3

Est-ce que quelqu'un sait quelque chose à propos de "World" étant réservé ou construit en classe avec ce nom? lorsque je tente de construire la classe mondiale ai créé il throws erreur de compilation:Est-ce que "World" est un nom de classe réservé dans AS3?

1136: Incorrect number of arguments. Expected 2. 

Mais j'ai des millions de fois vérifié, il n'y a aucun argument du tout prévu, tout nommage des paquets, types de variables .. tout est correct, mais il jette cette erreur stupide. :/ Essayez-le sur votre propre et vous verrez que c'est le cas .. ou je suis stupide?

Lorsque je tente d'appeler la fonction init dans la classe mondiale, il jette celui-ci:

1061: Call to a possibly undefined method init through a reference with static type World. 

Grr ..

+1

essayez de changer le nom de la classe à autre chose pour voir si le même problème persiste. – TheDarkIn1978

+0

essayé et cela fonctionne avec un nom différent. :] mais je veux ce nom "monde". : D – Rihards

+0

cela pourrait être une collision avec une autre entité nommée 'World'. AFAIK, ce n'est pas un mot-clé courant ou même réservé. – alxx

Répondre

4

J'ai eu ce même problème. Je pense qu'il est réservé à partir de FlashPlayer 10 (peut-être 10.1, mais ne peut pas être sûr). Je devais contourner ce problème en utilisant mon nom de paquet complet lorsque je faisais référence à ma classe mondiale.

var myWorld:com.foo.World = new com.foo.World(); 

Laide, mais ça marche!

+1

+1 Oui, j'ai aussi eu le problème. Mon jeu compilé bien sur CS4 pour Flash Player 10, mais plus tard, lors de la compilation avec CS5 j'ai reçu l'erreur de compilation. Je pense que ce doit être 10.1 être le problème alors? – Allan

+1

+1 Juste eu ce problème aussi. Juste perdu environ une heure. –

1

Vous devez avoir quelque part une autre classe appelée mondiale dans votre chemin source. Regardez vos importations.

Saisissez le chemin complet du package Si nécessaire pour éviter toute confusion avec une autre classe mondiale un autre endroit:

var w:my.package.World = new my.package.World(); 
+0

Non, pas d'autres classes du monde. Tout - les importations, les paquets ... tout est correct. – Rihards

+0

Eh bien, la création d'un nouvel objet monde (new World();) dans un nouveau document génère une erreur indiquant qu'il ne peut pas trouver la classe, il doit donc s'agir d'un élément que vous importez. – Flassari

0

Je pense que vous devriez vérifier les paramètres qui sont nécessaires dans le constructeur et les rendre en option en passant = null ou quelque chose à la fonction constructeur. Cette 'erreur' peut se produire lorsque vous placez un symbole de votre bibliothèque qui a les paramètres requis dans le constructeur.

package com.myworld 
{ 
    public class World 
    { 
     public function World(parameter1:int = null, parameter2:String = null) 
     { 

     } 
    } 
} 
1

Deux autres possibilités:

Vous utilisez Flex/FlashBuilder, et l'importation d'un SWC? Ceux-ci peuvent exposer des classes sans révéler le code source.

Ou êtes-vous en train de compiler à partir d'un fichier FLA? Dans ce cas, il peut y avoir un symbole de bibliothèque exportant vers une classe ActionScript dont le nom est en conflit avec le vôtre.

Une autre possibilité est que le compilateur Flash que vous utilisez (que ce soit FlashPro ou FlashBuilder) ait incorrectement mis en cache une définition de classe que vous avez créée précédemment. J'ai déjà rencontré ce bug plusieurs fois auparavant. Essayez de faire un projet/Clean (dans FlashBuilder) ou, si vous êtes désespéré, créer un nouveau projet.

+0

Um, noup. Utilisation du flash cs5 pour coder. Aucun élément de bibliothèque n'a ce nom de classe. – Rihards

0

Ceci est un étirement, mais essayez de supprimer vos fichiers ASO (Contrôle> Supprimer les fichiers ASO) et recompilez. Si cela ne fonctionne pas, la seule autre chose que je suggère est de reconstruire votre projet, en testant ce problème chaque fois que vous importez un ou plusieurs groupes de classes. cette approche devrait vous garantir de trouver au moins l'origine du problème.

la classe de document suivante compile et s'exécute complètement bien pour moi dans Adobe Flash CS5 ciblant Flash Player 10.1.53.64 (10.1):

package 
{ 
import flash.display.Sprite; 
import flash.events.Event; 

public class World extends Sprite 
    { 
    public function World() 
     { 
     addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

    private function init(evt:Event):void 
     { 
     removeEventListener(Event.ADDED_TO_STAGE, init); 
     trace("World Document Added To Stage"); 
     } 
    } 
} 
0

Je viens de vérifier moi-même même si c'était un ancien poste qui a déjà été répondu. La raison en est que j'ai trouvé ce post en raison d'une recherche sur une liste de mots-clés réservés dans AS3.

Le « Monde » Mot-clé n'est pas réservé :) Oooops ...

Voici la liste que j'ai trouvé à ce jour avec des mots/des mots-clés réservés dans AS3: Si vous modifiez cette liste, s'il vous plaît laisser un commentaire/avec des sources ... THX Parfois, le même mot-clé peut apparaître deux fois dans la liste sous différentes catégories ...

0 : abstract  (future keyword) 
1 : as    (reserved keyword) 
2 : boolean   (future keyword) 
3 : break   (reserved keyword) 
4 : byte   (future keyword) 
5 : case   (reserved keyword) 
6 : cast   (future keyword) 
7 : catch   (reserved keyword) 
8 : char   (future keyword) 
9 : class   (reserved keyword) 
10 : const   (reserved keyword) 
11 : continue  (reserved keyword) 
12 : debugger  (future keyword) 
13 : default   (reserved keyword) 
14 : delete   (reserved keyword) 
15 : do    (reserved keyword) 
16 : double   (future keyword) 
17 : dynamic   (syntactic keyword) 
18 : each   (syntactic keyword) 
19 : else   (reserved keyword) 
20 : enum   (future keyword) 
21 : export   (future keyword) 
22 : extends   (reserved keyword) 
23 : false   (reserved keyword) 
24 : final   (syntactic keyword) 
25 : finally   (reserved keyword) 
26 : float   (future keyword) 
27 : for    (reserved keyword) 
28 : function  (reserved keyword) 
29 : get    (syntactic keyword) 
30 : goto   (future keyword) 
31 : if    (reserved keyword) 
32 : implements  (reserved keyword) 
33 : import   (reserved keyword) 
34 : in    (reserved keyword) 
35 : include   (syntactic keyword) 
36 : instanceof  (reserved keyword) 
37 : interface  (reserved keyword) 
38 : internal  (reserved keyword) 
39 : intrinsic  (future keyword) 
40 : is    (reserved keyword) 
41 : long   (future keyword) 
42 : namespace  (syntactic keyword) 
43 : native   (reserved keyword) 
44 : native   (syntactic keyword) 
45 : new    (reserved keyword) 
46 : null   (reserved keyword) 
47 : override  (syntactic keyword) 
48 : package   (reserved keyword) 
49 : private   (reserved keyword) 
50 : protected  (reserved keyword) 
51 : prototype  (future keyword) 
52 : public   (reserved keyword) 
53 : return   (reserved keyword) 
54 : set    (syntactic keyword) 
55 : short   (future keyword) 
56 : static   (syntactic keyword) 
57 : super   (reserved keyword) 
58 : switch   (reserved keyword) 
59 : synchronized (future keyword) 
60 : this   (reserved keyword) 
61 : throw   (reserved keyword) 
62 : throws   (future keyword) 
63 : to    (future keyword) 
64 : to    (reserved keyword) 
65 : transient  (future keyword) 
66 : true   (reserved keyword) 
67 : try    (reserved keyword) 
68 : type   (future keyword) 
69 : typeof   (reserved keyword) 
70 : use    (reserved keyword) 
71 : var    (reserved keyword) 
72 : virtual   (future keyword) 
73 : void   (reserved keyword) 
74 : volatile  (future keyword) 
75 : while   (reserved keyword) 
76 : with   (reserved keyword) 

Voici les 3 tableaux de mots-clés:

private static var reserved:Array = [ 
          "as","break","case","catch","class","const","continue","default","delete", 
          "do","else","extends","false","finally","for","function","if","implements", 
          "import","in","instanceof","interface","internal","is","native","new","null", 
          "package","private","protected","public","return","super","switch","this", 
          "throw","to","true","try","typeof","use","var","void","while","with" 
          ]; 
private static var syntactic:Array = [ 
          "each","get","set","namespace","include","dynamic","final","native","override","static" 
          ]; 
private static var future:Array = [ 
         "abstract","boolean","byte","cast","char","debugger","double","enum","export","float", 
         "goto","intrinsic","long","prototype","short","synchronized","throws","to","transient", 
         "type","virtual","volatile" 
         ]