comem expliqué sur: http://www.flashcomponents.net/tutorials/triangle/triangle.html
Archive for December, 2007
-
MovieClip.prototype.__createTextField__ = MovieClip.prototype.createTextField;
-
MovieClip.prototype.createTextField = function(n,d,x,y,w,h) {
-
this.__createTextField__(n,d,x,y,w,h);
-
return this[n];
-
}
Ensuite
-
var myText = _root.createTextField(“saisie”,10,10,10,100,20);
-
// Modifie les propriétés du champ texte créé.
-
myText.text=“hello worlds”;
Dans un projet de e-learning, un des modules le plus important est le tableau blanc interctif.
Le pricipe de ce tableau blanc (whiteBoard) a été décrit dans un post précédent (utilisant les SHARED objects sous RED5)
Un tableau blanc nécessite l’ajout des nouveaux objets falsh mais aussi leur redimensionnement, leur déplacement et leurs rotation.
Deux prototypes peuvent être utilisés:
http://blog.greensock.com/category/transforming/
Mon préféré car il génére des evenements et possède une fonction intéressante: LA rotation en utilisant le MILIEU du movieClip.
L’autre prototype: http://proto.layer51.com/d.aspx?f=636
Flash 8 FULL SCREEN
_depth en FLASH
la propriété _depth n’existe pas sous FLASH.
Nous pouvons néanmoins la simuler facilement:
-
getDepth = function () {
-
return this.getDepth();
-
};
-
setDepth = function (valeur) {
-
swapDepths.call(this, valeur);
-
};
-
// Addproperty
-
MovieClip.prototype.addProperty(“_Depth”, getDepth, setDepth);
-
Button.prototype.addProperty(“_Depth”, getDepth, setDepth);
-
TextField.prototype.addProperty(“_Depth”, getDepth, setDepth);
dessiner avec Flash
Il suffit d(utiliser les methodes lineTo
-
createEmptyMovieClip(“Line”, 1);
-
Line.lineStyle(1, 0×000000, 100);
-
onMouseDown = function () {
-
Line.moveTo(_xmouse, _ymouse);
-
onMouseMove = function () {
-
Line.lineTo(_xmouse, _ymouse);
-
trace(“*”);
-
};
-
};
-
onMouseUp = function () {
-
onMouseMove = null;
-
Line._x=100;
-
};
var nc:NetConnection = new NetConnection();
nc.connect(”rtmp://localhost/whiteBoard”,”zaza”,”zaza”);
var so:SharedObject = SharedObject.getRemote(”whiteBoard”, nc.uri, false);
so.connect(nc);
so.onSync = function(list) {
trace(”SYNCRO”);
}
nc.onStatus= function(infoObject:Object) {
trace(infoObject.code);
}
test_btn.onPress=function() {
trace(”click”);
_root.so.data.mousePosition = {x: 100, y: 200};
}
Il n’est pas possible de passer directement un paramètre comme:
-
bouton.onPress=enterRoom(room);
-
-
function enterRoom(_room) {
-
trace(room);
-
}
On peut néanmoins résoudre ce problème par:
-
bouton.room=“room1″;
-
bouton.onPress=enterRoom;
-
-
function enterRoom() {
-
trace(this.room);
-
trace(“*”);
-
}
Shared Whiteboard application in Red5
var whiteboard_SO:SharedObject = SharedObject।getRemote(”whiteboard”,nc.uri,”false”);
Quand nous pressons la souris sur un MovieClip, nous capturons les positions x et y de la souris et nous les envoyons vers le serveur:
//envoyer x et y au serveur
};
clip_MC.onMouseMove = function(){
//envoyer x et y au serveur
NetConnectionObj.call(”draw”, null,param1, param2,param3);
}
Sur le serveur,
public void draw(Object[] params){
whiteboard_SO.setAttribute(”point”,params[0].toString()+”:”+params[1].toString()+”:”+params[2].toString());
// va etre declanché sur l’evenement onSync sur tous les clients connectés
}
Enfin sur la partie client
Whiteboard_SO.onSync = function(infolist){
// Inside the change event we will get the xmouse and ymouse and press string
//If event string is press, jump to new line(i.e. lineto(x,y))
//If event string is move, move with drawing(i.e. moveto(x,y))
}
TRADUIT de http://sunil-gupta.blogspot.com/2007/04/shared-whiteboard-application-in-red5.html
AJAX php: vérifier si un user est déjà enregistré sans avoir à re-charger la page
-
function RemoteRequestObject()
-
{
-
var A = false;
-
try { A = new ActiveXObject(“Msxml2.XMLHTTP”); }
-
catch(e)
-
{ try { A = new ActiveXObject(“Microsoft.XMLHTTP”); }
-
catch(err) { A = false; }
-
}
-
-
if(!A && typeof(XMLHttpRequest) != ‘undefined’)
-
A = new XMLHttpRequest();
-
return A;
-
}
-
-
function validateUser(oForm) {
-
var x = RemoteRequestObject();
-
oForm.onsubmit = function()
-
{
-
-
if (oForm.annee.value==“annee”) {
-
alert(“Entrez votre année de naissance”);
-
oForm.annee.focus();
-
return false;
-
-
}
-
if (oForm.email.value.indexOf(“@”) == -1 || oForm.email.value.indexOf(“.”) == -1 || oForm.email.value == “”)
-
{
-
alert(“Veuillez entrer un email valide”);
-
oForm.email.focus();
-
return false;
-
}
-
-
if (oForm.pseudo.value==“”) {
-
alert(“Choissez un pseudo”);
-
oForm.pseudo.focus();
-
return false;
-
}
-
if (oForm.motdepasse.value==“”) {
-
alert(“Choissez un mot de passe”);
-
oForm.motdepasse.focus();
-
return false;
-
}
-
-
if (oForm.cgu.checked==false) {
-
alert(“Vous devez accepter les conditions générales d’utilisation”);
-
oForm.cgu.focus();
-
return false;
-
-
}
-
-
var usr=oForm.elements[‘pseudo’].value;
-
var url = “ajax.php?pseudo=”+usr;
-
x.open(“GET”,url,true);
-
x.onreadystatechange=function()
-
{
-
if(x.readyState == 4 && x.status == 200)
-
{
-
var r = x.responseText;
-
if(r.indexOf(“OK”) == 0)
-
{
-
oForm.submit();
-
}
-
else
-
{
-
alert(“Le pseudo que vous avez choisi est déjà utilisé!\nVeuillez le changer!”);
-
form3.pseudo.focus();
-
}
-
}
-
};
-
x.send(null);
-
return false;
-
}
-
-
}
Le fichier ajax.php contient
commentaires récenets