![]() |
![]() |
|
|||||||
| Actionscript 1 |
| Actionscript 2 |
| Introduction à l'ActionScript 2 |
| Actions et généralités |
| Les objets |
| Des effets |
| Programmation orientée objet |
| Actionscript non documenté (Flash 5) |
Cette rubrique regroupe les actions (actions, fonctions, propriétés...) qui existent dans Flash et qui n'ont pas été "documentées" (càd non présentes dans la documentation du logiciel lors de la sortie de Flash 5) :
Attention, rien de vous garantit que les actions non documentées existeront encore dans les prochaines versions du logiciel. C'est le principe du "non documenté". Macromedia documente parfois certaines actions en cours de vie d'une version de logiciel. C'est le cas du asfunction (très utile!) que vous pouvez dorénavant utiliser sans compter - lors de tel changement, cette rubrique s'efforcera de vous en avertir !
ASNativedehats:Bien, je tente une première contribution dans cette rubrique... Si je dis des bétises, n'hésitez pas à me corriger. Cité dans l'ancienne rubrique fxp, ASNatvie n'y était pas développé. Voilà ce que j'en ai compris, tel que décrit dans WikiFlashCoders: En général, ASNative (i,j) retourne la référence d'une fonction. On peut en effet accéder aux fonctions de Flash stockées par lignes et colonnes. Une manière de travailler avec les fonctions ASNative est d'assigner le résultat à une variable, et d'executer ensuite la variable comme fonction. Le 1er paramètre est l'index de la table de fonctions dans le Flash Player, le second est l'index à l'intérieur de cette fonction. exemple: la référence de la fonction "trace" est (100,4). t = ASnative(100, 4); t ("salut!");//output : salut! Les arguments de ASNatvie sont des nombres Hexadécimaux. Quelques références ASNative: MATH: 200,0 abs 200,1 min 200,2 max 200,3 sin 200,4 cos 200,5 atan2 200,6 tan 200,7 exp 200,8 log 200,9 sqrt 200,10 round 200,11 random 200,12 floor 200,13 ceil 200,14 atan 200,15 asin 200,16 acos 200,17 pow 200,18 isNaN 200,19 isFinite autres: 3,0 very similar to toString(), but with differences 5,0 mouse show 5,1 mouse hide 100,0 escape 100,1 unescape 100,2 parseInt 100,3 parseFloat 100,4 trace 301,1 getUrl 800,2 (1) returns true if mouseDown 800,3 (1) returns true/false value which is toggled by every mouse down event ASInstanceOfPermet de déterminer de quelle classe un objet est l'instance. En fait, ASInstanceOf compare la propriété _proto_ de l'objet spécifié(1er paramètre) à un prototype spécifié(2nd paramètre) et renvoie une valeur booléenne (true or false). Aurement dit, il prend deux paramètres
"Instance" peut être n'importe quel objet autres que String, Function et Movie Clip. "Class Proto" peut être n'importe quel prototype d'objet autre qu'un prototype de String. exemple: myClass1=function() {
}
myClass2=function() {
}
myInstance1=new myClass1();
myInstance2=new myClass2();
if(ASInstanceOf(myInstance1,myClass1.prototype)) {
trace("myInstance1 is instance of myClass1 class");
}
if(ASInstanceOf(myInstance2,myClass2.prototype)) {
trace("myInstance2 is instance of myClass2 class");
}
if(!ASInstanceOf(myInstance1,myClass2.prototype)) {
trace("myInstance1 isn't instance of myClass1 class");
}
ASClampVérifie les limites d'un nombre. Il prend 3 paramètres:
max>n>min (renvoie n) n<min (renvoie min) n>max (renvoie max) Il n'y a pas de différence manifeste entre ASClamp et ASClamp2. Voici comment il est défini dans le player: function AsClamp? (v, mn, mx) { if (isNaN(v)) { v = 0; } return (Math.max(mn, Math.min(number (v), mx))); } ASClamp2Po compris la différence avec ASClamp :-( ASnewDétermine si la fonction qui l'appelle a été appellée avec le constructor "new". ASNew renvoie "true" ou "false". La fonction ayant invoqué ASNew peut agir en conséquence (NDT:"The function wich invoked ASnew can take actions accordingly") ASNewsemble être appellé comme une méthode de _flash. C'est à dire: mavariable = _flash.ASNew(); Néanmoins, ASNew échoue quand il est appellé comme méthode de n'importe quel objet connu, _flash y compris...(?) MovieClip.methArray.qsort(startIndex,endIndex[,orderfunc])Permet de trier une portion de tableau en précisant les bornes de la partie à trier.
exemple: bob =["c","b","a","e","d"]; bob.qsort(1,2); trace (bob); // renvoie c,a,b,e,d ASSetNativeAssigne les références de la fonction ASNative aux propriétés d'un objet. Il est probablement executé en interne au moment de l'initialisation du flash Player pour assigner les méthodes à chaque prototype de Class construit. 4 paramètres:
ASSetPropFlagsPermet d'afficher ou masquer les méthodes et propriétés contenues dans le prototype des objets, y compris les objets prédéfinis XML.init()XMLNode()notes de mise à jourdehats(22/04/02): j'ai ajouté ASNative, ASInstanceOf, ASNew, ASClamp, et ASSetNative (mais je galère un peu sur ce dernier...) |
| Actionscript non documenté (Flash MX) |
TextField.condenseWhitesupersatori un truc très très pratique: sur du textField HTML, pour que les comportements des espaces blancs soient comme dans un interpréteur HTML: createTextField("ts",1,0,0,350,350);
ts.html=true;
ts.condenseWhite=false;
txt="e aaeae \t azeaz zae aaze aze az ezea ";
ts.htmlText=txt;
onMouseDown=function() {
trace("on refait");
ts.condenseWhite=true;
ts.htmlText+=" ";
};
bien noter que le condenseWhite n'est mis à jour que lorsque le htmlText du textField est modifié, d'où ici par exemple l'ajout d'un espace. Vraiment vraiment béton :) supersatori update: il semble que Collin Moock confirme que cette propriété est exploitable et sera conservée. _listenersmama 07/04/02: _listeners est une propriété des objets pour lesquels ont peut ajouter des listeners (Stage, TextField, Key, Mouse et Selection). _listeners est un tableau qui contient la liste des listeners de l'objet concerné. _listeners comme tous les tableaux possède une propriété length qui donne sa longueur. bob={}
bob.nom="bob";
bob.onMouseDown=function () { trace ("héhé")};
bill={}
bill.nom="bill";
bill.onMouseDown=function () { trace ("héhé")};
Mouse.addListener(bob);
Mouse.addListener(bill);
trace ("longueur: "+Mouse._listeners.length);
for (var z=0;z<Mouse._listeners.length;z++) trace (Mouse._listeners[z].nom);
Mouse.removeListener(bill);
trace ("longueur: "+Mouse._listeners.length);
for (var z=0;z<Mouse._listeners.length;z++) trace (Mouse._listeners[z].nom);
/* renvoi
longueur: 2
bob
bill
longueur: 1
bob
*/
supersatori: Tout comme l'ordre d'enregistrement des listeners, l'ordre des elements dans _listeners définit l'ordre d'execution des listeners. On peut donc aussi utiliser par exemple sortOn: monGest={};
ASBroadcaster.initialize(monGest);
a= { name : "a" , listen: function() { trace ("listener a") } };
b= { name : "b" , listen: function() { trace ("listener b") } };
c= { name : "c" , listen: function() { trace ("listener c") } };
monGest.broadcastMessage("listen");
monGest._listeners.sortOn("name");
monGest.broadcastMessage("listen");
LoadVarsmama 07/04/02:
bob=new LoadVars();
bob.decode("nom=bob&age=55&taille=130&sexe=M");
for (var z in bob) trace (z+ ": "+bob[z]);
/* renvoi
sexe: M
taille: 130
age: 55
nom: bob
*/
boby=new LoadVars();
boby.onData=function (pData) {
trace ("ok le chargement est réussi, reste plus q'a décoder ;)");
trace ("données chargées et non parsées: "+pData);
}
boby.load("http://www.flashxpress.net/loadvars.txt");
/* renvoi
ok le chargement est réussi, reste plus q'a décoder ;)
données chargées et non parsées: bill=trop fort
*/
le couple onData/decode est l'équivalent de onData/parseXml de l'objet Xml pour l'objet LoadVars ASBroadcastermama 07/04/02:
ASBroadcaster permet d'ajouter des "listeners" à n'importe quel objet. Leur utilisation est similaire aux listeners de Flash MX, sauf qu'il faut déclencher l'evenement. supersatori : Un seul gestionnaire d'evenement peut gérer plusieurs évènements utilisateurs. Il possède comme les autres système de listeners une propriété tableau _listeners. bob={};
ASBroadcaster.initialize(bob);
a = {salut:function () {trace ("salut de a")} , ciao : function () {trace("ciao de a")} }
b = {salut:function () {trace ("salut de b")}}
c = {salut:function () {trace ("salut de c")}}
bob.addListener(a);
bob.addListener(b);
bob.addListener(c);
bob.broadcastMessage("salut");
bob.broadcastMessage("ciao");
mama - 24/04/02: Les objets de haut niveau que sont Mouse, Selection, Key, Stage et l'objet TextField possède la méthode broadCastMessage: bob= {test: function () { trace ("héhé") }}
Mouse.addListener(bob);
Mouse.broadcastMessage("test");
supersatori : De plus on peut utiliser ASBroadcaster pour créer un gestionnaire d'enterframe sur n'importe quel objet, pas seulement les movie clips: this.createEmptyMovieClip("EnterFrame",271824897);
ASBroadcaster.initialize(EnterFrame);
EnterFrame.onEnterFrame=function () {
this.broadcastMessage("onEnterFrame");
}
a={ onEnterFrame : function () { trace("objet a onEnterFrame");} }
EnterFrame.addListener(a);
ASSetPropFlags
gag 05/04/02:
ça existait déjà dans Flash 5, mais ça fonctionne légèrement
différemment ds MX (un paramètre supplémentaire)... voici qques infos
(la majorité provient du WikiFlashCoders):
Object.prototype.setPropEnumerable = function(pProp, pBool){
ASSetPropFlags(this, pProp, pBool ? 0 : 1 , pBool ? 1 : 0 );
}
Object.prototype.setPropErasable = function(pProp, pBool){
ASSetPropFlags(this, pProp, pBool ? 0 : 2 , pBool ? 2 : 0 );
}
Object.prototype.setPropWritable = function(pProp, pBool){
ASSetPropFlags(this, pProp, pBool ? 0 : 4 , pBool ? 4 : 0 );
}
Object.prototype.getPropEnumerable = function(pProp){
return this.isPropertyEnumerable(pProp);
}
Object.prototype.getPropErasable = function(pProp){
var tmp = this[pProp];
if(tmp === undefined) return false;
delete this[pProp];
if(this[pProp] === undefined){
this[pProp] = tmp;
return true;
}else{
return false;
}
}
Object.prototype.getPropWritable = function(pProp){
var newVal = (this[pProp] == 0) ? 1 : 0;
var tmp = this[pProp];
this[pProp] = newVal;
if(this[pProp] == newVal){
this[pProp] = tmp;
return true;
}else{
return false;
}
}
ASSetPropFlags(Object.prototype,
"setPropEnumerable,setPropErasable,setPropWritable,getPropEnumerable,getPropErasable,getPropWritable",
1);
// gag (et P.Hall pour les getters^^)
Tableau de référence n%8 nbits protègé en écriture? protègé de l'effacement? caché? 0(n==0) 000 - - - 0(n!=0) 1000 non non non 1 001 non non oui 2 010 non oui non 3 011 non oui oui 4 100 oui non non 5 101 oui non oui 6 110 oui oui non 7 111 oui oui oui
Exemples d'utilisation
1. Voir toutes les propriétés d'un objet:
2. Protéger certaines propriétés contre l'effacement:
for (var z in monObjet) delete monObjet[z];
3. Eviter de polluer une sous-classe ou une occurence:
Object.prototype.fonctionPerso = function(){};
ASSetPropFlags(Object.prototype,"fonctionPerso",1);
myObj = {};
4. Cacher les méthodes privées d'une classe:
ASSetPropFlags(maClasse.prototype,"methodePrivee",7);
bob = new maClasse(); Conclusion: c'est vraiment bien cool:-) (gag - 05/04/02) Microphonesupersatori:HOWTO: Explorer les fonctions cachées d'un objet exemple microphone: scanned=Microphone; mono=scanned.get(); trace("***instance");
ASSetPropFlags(mono,null,8,1);
for (var i in mono) {
trace(i+" "+mono[i]);
}
trace("***constructeur");
ASSetPropFlags(mono.constructor,null,8,1);
for (var i in mono.constructor) {
trace(i+" "+mono.constructor[i]);
}
trace("***constructeur.prototype");
ASSetPropFlags(mono.constructor.prototype,null,8,1);
for (var i in mono.constructor.prototype) {
trace(i+" "+mono.constructor.prototype[i]);
}
nous sort entre autres choses: muted true --> propriété muted booleene. useEchoSuppression 0 --> propriété useEchoSuppression nombre. gain 50 --> propriété gain nombre rate 8 --> propriété rate nombre silenceTimeOut 2000 --> propriété silenceTimeOut nombre silenceLevel 10 --> propriété silenceLevel nombre name Gamesurround Fortissimo II --> propriété name string activityLevel -1 --> propriété activitylevel nombre index 0 --> propriété index nombre get [type Function] --> méthode trouvée dans le constructeur setUseEchoSuppression [type Function] --> méthode setUseEchoSuppresion setGain [type Function] --> méthode setGain setRate [type Function] --> méthode setRate setSilenceLevel [type Function] --> méthode setSilenceLevel
m=microphone.get();
this.attachAudio(m);
s=new Sound(this);
s.setVolume(0);
tabLev=new Array(20);
this.onEnterFrame=function() {
tabLev.push(m.activityLevel*2);
tabLev.shift();
this.clear();
for (var i=tabLev.length-1;i>=0;i--){
this.moveTo(i*10,0);
this.beginFill(0xff0000,100);
this.lineTo(i*10,tabLev[i]);
this.lineTo(i*10+10,tabLev[i]);
this.lineTo(i*10+10,0);
this.lineTo(i*10,0);
this.endFill();
}
}
#authoring_bytecode_()http://www.flashxpress.net/forum/showthread.php?s=&threadid=30512 System.capabilities.isDebuggerCette propriété non documentée retourne un booleen précisant si on est dans le lecteur Debug ou pas |
| Actionscript non documenté (Flash MX 2004) |
Le but de cette page est référencer vos remarques ou découvertes concernant l' AS non documentée
Cette rubrique regroupe les actions (actions, fonctions, propriétés...) qui existent dans Flash et qui n'ont pas été "documentées" (càd non présentes dans la documentation du logiciel lors de la sortie de Flash MX 2004) :
Attention, rien de vous garantit que les actions non documentées existeront encore dans les prochaines versions du logiciel. C'est le principe du "non documenté". Macromedia documente parfois certaines actions en cours de vie d'une version de logiciel. C'est le cas du asfunction (très utile!) que vous pouvez dorénavant utiliser sans compter - lors de tel changement, cette rubrique s'efforcera de vous en avertir !
TextField.StyleSheet.onDataComme l'ensemble des objets chargeant des données externes, il est possible d'intercepter les données brutes ctrhargées avant que le parseur interne de la classe s'exécute, c'est le cas de XML, XMLSocket, !Loadvars. Pour certain objet cette méthode est délibérément masquée (pour des raisons obscures), c'est le cas de l'objet LoadVars ou TextField.StyleSheet, cette méthode est la méthode TextField.StyleSheet.onData que vous pouvez utiliser si vous souhaiter traiter vous même les données extraites du fichiers CSS externe: monStyle=new TextField.StyleSheet(); monStyle.onData=function (pData) {
trace ("récupération de la feuille de style sous forme de chaîne brute");
trace (pData);
} monStyle.load("style.css");
|
© 2001-2009 Flashxpress, B. Gac et G. Monnier