学习ActionScipt的一些提示 ActionScipt apprentissage quelques conseils
08月7th, 2006 — Dreamer 7月08 e, 2006 - Dreamer 英文原文:《Tips for learning ActionScript 3.0》 Anglais: «Conseils pour l'apprentissage d'ActionScript 3,0"
原文地址:http://www. adobe .com/devnet/actionscript/articles/actionscript_tips.html Original adresse: http://www. Adobe. Fr / DevNet / ActionScript / articles / actionscript_tips.html
译者:Dreamer。 Traduction: Dreamer.
学习ActionScipt的一些提示 ActionScipt apprentissage quelques conseils
ActionScript 3.0是一种强大的面向对象语言,它为Flash Player描绘了一种新的编程模型。 3,0 ActionScript est un puissant langage orienté objet, il représente Flash Player pour un nouveau modèle de programmation. 如果你已经对ActionScript 1.0或2.0很熟悉,那么当你使用ActionScript 3.0开发你的第一个应用程序的时候需要知道一些语言差别。 Si vous avez ActionScript 1,0 ou 2,0 est très familier avec, le cas lorsque vous utilisez ActionScript 3,0 développement de votre première application lorsque le besoin de connaître certaines différences linguistiques.
注:更多资料,请参考Flex 2.0 Language Reference中ActionScript 2.0 和ActionScript 3.0之间的不同点的列表。 Note: Pour plus d'informations, se référer à s’il vous plaît Flex 2,0 Langue de référence dans ActionScript 2,0 et 3,0 ActionScript entre les différents points de la liste.
为了帮助大家更容易地过渡到ActionScript 3.0,我编辑了下面的列表,其中包括技巧和你可能在开发中会遇到的普遍的问题。 Afin d'aider les gens plus facilement la transition vers ActionScript 3.0, j'ai publié la liste ci-dessous, y compris les compétences et vous mai être rencontrés dans le développement d'un problème généralisé.
• 为所有变量,参数和返回值声明类型。 • pour toutes les variables, paramètres et valeur de retour type de déclaration. 为所有变量,参数和返回值声明类型不是必须的,但是它被认为是最好的习惯。 Pour toutes les variables, paramètres et valeur de retour type de déclaration n'est pas nécessaire, mais il est considéré comme le meilleur habitudes. 它将会帮助编译器给你更多地有用的错误信息。 Il aidera le compilateur pour vous donner plus de message d'erreur utile. 它还会增强运行时的性能,因为虚拟机将会认为你事先知道你所做的工作。 Il renforcera également le run-time performance, parce que la machine virtuelle saura que vous pensez que vous l'avance le travail accompli. 实际上,它是如此重要所以如果你没有声明我们会给出一个警告。 En fait, il est si important si vous ne déclarent pas nous donner un avertissement.
• 注意现在没有访问方式的声明都默认是internal方式,而不是public。 • ne pas avoir à payer l'attention sur la déclaration sont le mode par défaut est interne, pas public. 现在默认的访问方式是internal而不是public,这就是说这个声明只对含有这个声明的包可见,而不是对所有代码都可见。 Maintenant, les accès par défaut est interne plutôt que public, qui est la seule déclaration sur le paquet contenant la déclaration selon laquelle, au lieu du code sont visibles à tous. 这一点和其它一些语言相一致,比如JAVA。 Cette langue et d'autres en ligne, tels que JAVA. 因为ActionScript2.0的声明默认为是public,这个变化将很可能造成普遍的错误,所以请总是在声明前面加上访问方式,让你的意图更加清楚。 ActionScript2.0 parce que la déclaration est la valeur par défaut pour le public, ce changement pourrait causer des erreurs, de sorte s’il vous plaît toujours dans une déclaration à venir avec des visites à faire vos intentions plus clairement. 为了鼓励这个好习惯,ActionScript 3.0编译器将在没有访问方式声明的时候给出一个警告。 Afin d'encourager les bonnes habitudes, ActionScript 3,0 compilateur pas à accéder à l'époque où la déclaration est un avertissement.
• 注意类都是默认为封装(sealed)的,也就是说不能在运行时动态地添加属性。 • l'attention sont la catégorie par défaut pour le paquet (scellé), qui n'est pas dans la gestion dynamique d'ajouter des attributs. 现在类可以是动态的(dynamic)或者封装的(sealed)。 Maintenant, peut être de type dynamique (dynamique) ou le paquet (scellé). 动态(dynamic)类可以在运行时添加动态属性;封装(sealed)类不行。 Dynamic (dynamique) catégorie peuvent être ajoutés dans le run-time attributs dynamiques; Conditionnement (scellé) catégorie. 因为不需要内部哈希表来保存动态的属性,封装(sealed)类占用内存少,而且编译器可以对它提供更好的错误反馈。 En raison de table de hachage interne n'a pas besoin de préserver la dynamique attributs, l'emballage (scellé) catégorie occupent moins de mémoire et compilateur il peut fournir un meilleur retour d'information erreur. Class Foo这种声明就是封装(sealed)的。 Cette déclaration est la classe Foo paquet (scellé). 要声明一个动态(dynamic)类,就使用dynamic关键字——比如,dynamic class Foo。 Avez-de déclarer une dynamique (dynamique) catégorie, l'utilisation dynamique de mots clés - par exemple, dynamique de classe Foo.
• 使用包(package)声明把一个类放到一个包(package)里面。 • l'utilisation du paquet (package) une déclaration à une catégorie dans un paquet (package) à l'intérieur. Package是ActionScript 3.0中一个新的关键字。 Forfait est un nouveau ActionScript 3,0 dans les mots clés.
ActionScript 2.0 代码: ActionScript 2,0 code:
class mx.controls.Button { … } mx.controls.Button classe (…)
ActionScript 3.0 代码: ActionScript 3,0 code:
package mx.controls { class Button { .. } } mx.controls paquet (classe Button (..))
在ActionScript 2.0中,一个public类必须放在一个文件名和类名相同的文件中。 En ActionScript 2,0, un public catégories doivent être placés sur un nom de fichier et le type du même document. 多个类可能在同一个文件中声明,但是只有一个类可能是public,并且这个类的名字必须和文件名字相同。 À la même catégorie mai être plus d'une déclaration dans le document, mais seulement une catégorie mai publiques, ainsi que le nom de ce type doit être le même nom de document.
• 导入类,即使对这个类的引用都是完全合法的。 • catégorie d'importation, même si l'utilisation de ce type sont tout à fait légitime. 要使用MyPackage.MyClass类,你必须导入它: Pour utiliser MyPackage.MyClass catégorie, vous devez l'importer:
import MyPackage.MyClass; MyPackage.MyClass importation;
你必须这样做既是所有的引用都是完全合法的,并且要使用完整的名字MyPackage.MyClass。 Vous avez à faire est l'utilisation de tous sont totalement légitimes, et nous devons utiliser le nom complet MyPackage.MyClass. 在ActionScript 3.0中,import语句表明你想要使用一个来自另外一个包中的类,而在ActionScript 2.0中,它只是用来帮助记忆类名。 En ActionScript 3,0, déclarations d'importation indiquer que vous souhaitez utiliser l'une de l'autre type de paquet, et en ActionScript 2,0, il est seulement utilisé pour aider la mémoire nom de classe. 在ActionScript 3.0中,完整的类名只是用来消除歧义,而不再是import语句的替代品。 En ActionScript 3,0, le plein nom de classe est utilisé pour éliminer les ambiguïtés, plutôt que de se substituer à la déclaration d'importation.
也可以使用* 通配符来导入一个包中的所有类。 * Vous pouvez également utiliser des caractères d'importer un ensemble de tous types.
import MyPackage.*; MyPackage importation .*;
单个地导入类被认为是一个好习惯,因为这样更明确地表明了你的代码使用了哪一个类。 Pour importer une seule catégorie a été considérée comme une bonne habitude, car il montre clairement que plus vous utilisez un code qui catégorie.
• 始终标记方法的覆写。 • toujours l'emporter sur le tag méthode. Override关键字可以帮助避免覆写方法时常见的错误,比如对一个被覆写得方法定义了错误的名字或者被覆写的方法的名字改变导致的错误。 Ignorer les mots-clés peut aider à éviter l'écrasement des méthodes pour les erreurs fréquentes, telles que la doublure d'une définition écrite de la mauvaise méthode ou le nom de la méthode a été l'emporter sur le changement de nom dans la mauvaise. 这样做会使包含有覆写方法的代码看起来更清晰。 Cela écraser méthodes inclure le code semble plus clairement. 因为编译器能够知道一个方法是否试图覆写另外一个,它就能执行更好的检查。 Parce que le compilateur de savoir si une façon d'essayer de l'emporter sur l'autre, il peut améliorer l'application de l'inspection. ActionScript 3.0中的override关键字是从C#的override关键字中获得的灵感。 ActionScript 3,0 dans l'emporter sur les mots clés de C # passe outre les mots-clés obtenir inspiration.
• 在函数中定义返回类型。 • fonction dans la définition de type de retour. 为一个函数定义返回类型是一个好习惯。 Retour à fonctionner comme une définition du type est une bonne habitude. 如果你忽略了返回类型,会出现一个警告。 Si vous ignorez le type de retour, il y aura un avertissement. 这是为了类型的安全性,这样一来你就不会无意中没有写返回类型而得到默认的Object返回类型。 C'est le type de sécurité, de cette façon vous pas, par inadvertance, pas été écrite pour revenir au type de l'objet pour revenir au type par défaut. 如果一个函数没有返回任何值,将它的返回类型声明为void。 Si une fonction n'a pas une valeur de retour, il sera de retour le type de déclaration est nulle.
• 注意,delegate现在被定义到了语言里,使得事件分派更简单。 • attention, délégué maintenant être définies par la langue, ce qui rend la distribution plus simple incident. 在ActionScript 2.0中,把事件指向到一个方法需要使用mx.utils.Delegate 类或者其他的工作: En ActionScript 2,0, pointant à l'incident nécessité d'utiliser une méthode mx.utils.Delegate ou autre type de travail:
import mx.utils.Delegate; mx.utils.Delegate importation;
myButton.addEventListener(”click”, Delegate.create(this, onClick)); myButton.addEventListener ( "click", Delegate.create (ce qui, onClick));
在ActionScript 3.0中,方法的一个引用会自动记住它引用的对象实例。 En ActionScript 3,0, une méthode utilisée mémorisera automatiquement Elle a cité des exemples de la cible. 这被称为method closure。 C'est ce qu'on appelle la méthode de fermeture. 本质上来说,这就是一个自动的delegate。 En substance, il s'agit d'un délégué automatique. 所以,代码可以简单地写成: Par conséquent, le code peut être simplement écrit:
myButton.addEventListener(”click”, onClick); myButton.addEventListener ( "click", onClick);
• 现在解除一个null或者undefined的引用将会抛出一个异常。 • maintenant lever un nul ou références sera servi une anomalie. 解除一个null或者undefine的引用在以前的ActionScript中会被忽略并且定义引用为undefined。 Une levée de l'undefine nul ou cités dans les précédents ActionScript sera pas pris en compte et la définition utilisée pour indéfini. 现在,一个TypeError异常会抛出。 Maintenant, une TypeError anomalies seront jetés. 提防无意中解除的null或undefined引用,并且依靠这个报告错误的特性。 Méfiez-vous des null levée ou par inadvertance cité indéfini, et en s'appuyant sur le rapport de l'erreur. 这种新的抛出异常的特性与ECMAScript定义相符合。 Ce nouveau servi à l'inhabituel caractéristiques compatibles avec la définition de ECMAScript.
• 使用-verbose-stacktraces和-debug选项。 • Utilisez - verbose et-stacktraces - debug options. 使用命令行选项-verbose-stacktraces和-debug编译可以使文件名和行号出现在Flash Player的警告框中。 L'utilisation des options de ligne de commande - verbose et-stacktraces - debug compilateur peut rendre le nom de fichier et numéro de ligne dans le Flash Player de la boîte d'alerte. 当一个运行时错误发生时,一个对话框会描述这个错误并且列出它发生错误的地方的调用堆栈。 Quand un run-time erreur, une boîte de dialogue décrire l'erreur et le présente au mauvais endroit, la pile d'appel. 使用-verbose-stacktraces和-debug选项可以让在源代码中定位错误变得简单。 Utilisez - verbose et-stacktraces - debug option permet le code source de simples erreurs de positionnement.
• 显式声明bindable属性。 • déclaration explicite bindable propriétés. 属性不再默认为bindable。 La valeur par défaut n'est plus l'attribut bindable. 你必须使用[Bindable]元数据标签来声明它们为bindable。 Vous devez utiliser [Bindable] métadonnées étiquettes à leur déclaration pour bindable.
• 注意Flash Player API被重新组织到了包里。 • l'attention sur l'API Flash Player organisations à être ré-sac. 以前Flash Player API中所有的类和函数都是全局的。 Flash Player API avant toutes les catégories et les fonctions sont la situation d'ensemble. 现在有了许多包,象flash.display, flash.events, flash.ui以及其它。 Maintenant, avec beaucoup de paquets, comme flash.display, flash.events, flash.ui et autres. 举个例子,MovieClip现在是flash.display.MovieClip并且getTimer 和setInterval都被放进了flash.utils 包中。 Par exemple, MovieClip est maintenant flash.display.MovieClip et getTimer et setInterval ont été mis dans le paquet flash.utils.
• 使用新的Timer类,而不是setInterval/setTimeout。 • l'utilisation des nouvelles Timer catégorie, plutôt que setInterval / setTimeout. 与setInterval/setTimeout函数相比,新的Timer类为timer事件提供了更清晰的机制。 Et setInterval / setTimeout fonction par rapport à une nouvelle catégorie pour les événements Minuterie minuterie fournir un mécanisme clair. 新的Timer类与setInterval方法相比有很多优势,比如不需要处理ID数字间隔,还有一个更好的,面向对象的接口。 Nouvelle minuterie catégorie par rapport à la méthode setInterval présente de nombreux avantages, tels que les numéros d'identification n'ont pas besoin de traiter avec des intervalles, il ya un mieux, object-oriented interface. 我们把使用Timer而不是使用setInterval和setTimeout看作是一个好习惯。 Nous utilisons la minuterie plutôt que d'utiliser setInterval et setTimeout considérée comme une bonne habitude.
• 确认事件(event)是继承而来的 。 • confirmer l'incident (event) est transmise par. 现在事件(event)是强类型的,并且必须是新的Event基类的子类。 Mais l'actualité (événement) est le type de ferme, et doivent être neufs Event-type de sous-classe. 新的Event类让事件体系更加清晰和有效。 L'événement pour la nouvelle catégorie d'événements plus clairement et plus efficacement. 但是,这也意味着当分派事件的时候你不能再使用Object类的通用实例了,并且你不能使用对象的文字简写——例如,{type: ‘customEvent’ }。 Toutefois, cela signifie également que si elle le cas où vous ne pouvez plus utiliser l'objet exemple du type de génériques, et vous ne pouvez pas utiliser le texte abrégé objet - par exemple, (type: 'customEvent »).
你现在需要使用Event类(例如,dispatchEvent(new Event (’myCustomEventType’))),而不是创建一个通用的Object类。 Vous devez utiliser la catégorie d'événements (par exemple, dispatchEvent (nouveau l'événement ( «myCustomEventType'))), plutôt que de créer une catégorie d'objets génériques. 如果你想要传递附加的属性就需要从Event继承。 Si vous voulez transférer des attributs supplémentaires exigés des cas de succession. 不使用Object的动机是为了获得更高的类型安全性和效率。 Objet pas utiliser le motif est d'obtenir le type de plus grande sécurité et d'efficacité.
• 注意可视的元素必须继承自DisplayObject,并且你可以像其它类一样定义它们。 • l'attention sur les éléments visuels doivent être héritées du DisplayObject, et vous pouvez être la même catégorie que les autres de leur définition. 组件现在通过new动态创建并且使用addChild被添加到显示列表中。 Maintenant, grâce à la nouvelle dynamique des composants de créer et d'utiliser addChild être ajouté à la liste d'affichage. 所以,不鼓励使用createChild。 Par conséquent, ne pas encourager l'utilisation de createChild. 可视化的实体,包括TextField,可以像其它对象一样实例化并且使用addChild或addChildAt简单地添加到显示列表中。 Visualisation des entités, y compris la TEXTFIELD, peut être le même que d'autres exemples d'objets et de l'utilisation de addChild ou addChildAt simplement ajouté à la liste d'affichage. 注意,这意味着一些API消失了,比如createEmptyMovieClip 和createTextField。 Notez que cela signifie que certaines API disparu, comme createEmptyMovieClip et createTextField. 你可以使用new TextField而不是使用createTextField来创建一个新的TextField。 Vous pouvez utiliser la nouvelle TEXTFIELD createTextField plutôt que de créer une nouvelle TEXTFIELD.
• 现在在Flash中推荐使用E4X (ECMAScript for XML)来操作XML。 • maintenant en Flash recommandé E4X (ECMAScript pour XML) pour exploiter le langage XML. E4X与以前的Flash XML类相比非常强大并且更好地整合进了语言中,它还提供了很多新的性能。 E4X Flash XML et la première catégorie par rapport à très forte et mieux intégrés dans la langue, il offre un grand nombre de nouvelles propriétés. 以前的Flash XML类依然可以使用。 Flash XML première catégorie peut encore utiliser. 如果你喜欢用以前的XML API,它就在flash.xml包中。 Si vous voulez utiliser l'ancienne API XML, il est flash.xml paquet. 它依然可用只是重新命名成了XMLDocument。 Il reste disponible uniquement pour renommer un XMLDocument.
• 当使用E4X的时候使用toXMLString方法。 • Lorsque vous utilisez E4X lorsque la méthode utilisée toXMLString. toString方法没有为对象返回完整的XML标记;如果你想获得,使用toXMLString方法。 toString méthode ne s'oppose pas à revenir au plein balises XML si vous voulez accéder, utiliser toXMLString méthodes. toString方法为XML对象返回一个简单的字符串。 toString méthode pour objet XML pour revenir à une simple chaîne. 它并不会完全将XML对象序列化。 Il ne sera pas complètement séquence d'objet XML. 要获得XML标记,请调用toXMLString方法。 Pour obtenir des balises XML, appelez toXMLString méthodes.
• For……in循环将不再枚举类中声明的属性或者方法。 •…… Pour en circulation non mentionnés dans la Déclaration du type de propriété ou une méthode. 它只枚举一个对象的动态属性。 C'est seulement une énumération des caractéristiques dynamiques d'une cible. ActionScript 3.0特性中有一个针对对象自省的新的先进机制,叫做describeType。 ActionScript 3,0 caractéristiques d'un objectif auto-examen de la nouvelle avancée mécanisme, appelé describeType. 在ActionScript 3.0中使用它来自省对象。 ActionScript 3,0 dans l'utilisation de ses objets de la province.
• 现在一个SWF文件的根对象可以是你自主选择的一个自定义类的实例。 • maintenant un fichier SWF est l'objet racine, vous pouvez choisir indépendamment une coutume catégorie d'exemples. ActionScript 2.0中,一个SWF文件的根对象总是MovieClip的实例。 ActionScript 2,0, un fichier SWF MovieClip cible toujours la racine de l'affaire. 而在ActionScript 3.0中,它可以使Sprite的任意子类。 En ActionScript 3,0, il peut faire une sous-catégorie de Sprite. 你可以设定一个类作为一个SWF文件的DocumentRoot。 Vous pouvez définir une classe comme un fichier SWF DocumentRoot. 当其加载时,SWF文件会将它实例化然后将其作为自己的根对象。 Lors du chargement, SWF exemples de ce document, il sera alors utilisé comme la racine de leurs objectifs.
特别感谢我们的开发团体为这篇文章提出建议。 Merci spécial à nos groupes de développement de faire des recommandations pour cet article. 这里列出的决不是详尽的,但是它是一个起点,可以帮助你打好学习ActionScript 3.0的基础。 Énumérés ici ne sont pas exhaustifs, mais il est un point de départ, peut vous aider à établir une bonne base pour l'apprentissage d'ActionScript 3,0. 如果你熟悉其它的面向对象的语言,你可能发现这些提示只是一个复习——复习你已经在别处学习到的并且可以立即在ActionScript 3.0中使用的技巧。 Si vous êtes familier avec d'autres langage orienté objet, vous trouverez mai ces conseils est seulement un réexamen - de la littérature, vous devez d'apprendre ailleurs dans l'immédiat et à ActionScript 3.0 dans l'utilisation des compétences.
如果你对ActionScript 3.0和面向对象编程是一个新手,那么这些提示将会派得上用场。 Si vous ActionScript 3,0 et de programmation orienté objet est un novice, ces conseils seront envoyés une inutile. 对你来说,这就是一个简单的可以帮你巩固知识的列表。 Pour vous, il s'agit d'une simple connaissance peut vous aider à consolider la liste. 编码愉快! Codage heureux!
本文链接: http://www.zhuoqun.net/html/y2006/189.html 转载请注明出处,谢谢。 Ce lien: http://www.zhuoqun.net/html/y2006/189.html réimpression de référence s’il vous plaît, je vous remercie.
TrackBack引用地址: http://www.zhuoqun.net/html/y2006/189.html/trackback TrackBack utilisés Adresse: http://www.zhuoqun.net/html/y2006/189.html/trackback



