begin process at 2012 05 26 11:12:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

api dessin as3


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

api dessin as3

mardi 13 avril 2010 à 18:00:27 | api dessin as3

Ariranha

Bonjour à tous.

je suis actuellement sur un chronomètre en forme de cercle pour un jeu.

Je n'ai pas de problèmes en ce qui concerne le dessin du cercle en fonction d'un timer.

Or maintenant faut que je prévois que le temps peut être diminué (par collision dans le jeu). Je pense qu'un exemple sera plus simple pour exposer mon problème. Il suffit de cliquer sur le btn pour voir ce qui cloche.

Lien vers l'exemple.

Comment pourrais-je faire pour remplir les vides qui se forment ? Si quelqu'un avait une piste je suis plus que preneur.

Merci

Le code de l'exemple ci-dessous :

Code ActionScript :
/*___________________RENDU GRAPHIQUE TIMER_____________________*/
var _letimer:Timer = new Timer(10,15000);
var _progress:Shape = new Shape();
_progress.x = 100;
_progress.y = 100;
var _temps:int;
var _letemps:int;
var _faceSize:Number;

var txt:txtTimer = new txtTimer();
txt.x = _progress.x - 40;
txt.y = _progress.y - 53;

initClock();

function initClock(faceSize:Number = 60):void {
	_faceSize = faceSize;
	AfficheClock(null);
}

function AfficheClock(evt:TimerEvent):void {
	addChild(txt);
	txt.filters = [ombre];

	addChild(_progress);
	_progress.filters = [ombre];

	_progress.graphics.clear();
	_progress.graphics.beginFill(0xb7dd3c);
	_progress.graphics.drawCircle(0,0,(_faceSize/2));

	_progress.graphics.lineStyle(1.0,0xffffff,1);
	_progress.graphics.drawCircle(0,0,(_faceSize/2)+1);

	_progress.graphics.lineStyle(3,0xffffff,1);
	_progress.graphics.drawCircle(0,0,(_faceSize/2));
	_progress.graphics.endFill();

	startClock(1);
}

function startClock(temps:uint):void {
	_progress.graphics.moveTo(0,0);
	_progress.graphics.lineStyle(2.0,0x4a7d04,1);
	_progress.graphics.lineTo(0,-((_faceSize-6)/2));
	_progress.graphics.endFill();

	_temps = 18000;

	_letimer.start();
	_letimer.addEventListener(TimerEvent.TIMER, onTick);
}

var angle:Number;
var newX:Number;
var newY:Number;

function onTick(evt:TimerEvent):void {
	_temps = _temps - 10;
	_progress.graphics.moveTo(0,0);
	angle = _temps / 18000 * Math.PI * 2;
	newX = Math.sin(angle) * -((_faceSize-6)/2);
	newY = Math.cos(angle) * -((_faceSize-6)/2);
		
	_progress.graphics.lineTo(newX,newY);

	if (_temps <= 0) {
		_letimer.addEventListener(TimerEvent.TIMER, finTimer);
	}
}

function finTimer(evt:TimerEvent):void {
	_letimer.removeEventListener(TimerEvent.TIMER, finTimer);
	_letimer.removeEventListener(TimerEvent.TIMER, onTick);
}

/*__________________BTN___________________*/
var monClip:MovieClip = new MovieClip();
addChild(monClip);
var bouton:Shape = new Shape();

monClip.addChild(bouton);
bouton.graphics.clear();
bouton.graphics.beginFill(0x124457);
bouton.graphics.lineStyle(2,0xb5b000);
bouton.graphics.drawRoundRect(150,150,100,60,5);
bouton.graphics.endFill();

function clique(evt:MouseEvent):void {
	_temps = _temps - 1000;
	
	if (_temps <= 0) {
		_letimer.addEventListener(TimerEvent.TIMER, finTimer);
		_letimer.removeEventListener(TimerEvent.TIMER, onTick);
	}
}

function monClip_over(evt:MouseEvent):void {
bouton.graphics.beginFill(0xffffff);
bouton.graphics.drawRoundRect(150,150,100,60,5);
bouton.graphics.endFill();
}

function monClip_out(evt:MouseEvent):void {
bouton.graphics.beginFill(0x124457);
bouton.graphics.drawRoundRect(150,150,100,60,5);
bouton.graphics.endFill();
}

monClip.buttonMode = true;
monClip.addEventListener(MouseEvent.CLICK, clique);
monClip.addEventListener(MouseEvent.MOUSE_OVER, monClip_over);
monClip.addEventListener(MouseEvent.MOUSE_OUT, monClip_out);


mardi 13 avril 2010 à 18:24:14 | Re : api dessin as3

pegase31

Membre Club Administrateur CodeS-SourceS
Bonsoir,

Question : pourquoi dessines-tu des traits au lieu des portions de cercle ?

Il suffit de redessiner ta portion de cercle à chaque frame précédé d'un "clear()" et le tour est joué.

Peg'
mardi 13 avril 2010 à 19:59:32 | Re : api dessin as3

Ariranha

Bonsoir,

Dis moi si j'ai tord mais si je dessine des portions de cercle comme tu dis on ne verra pas le cercle se former petit a petit mais par portion justement. D'où l'intérêt de le faire avec des traits ?


Ariranha.
mardi 13 avril 2010 à 20:46:44 | Re : api dessin as3

pegase31

Membre Club Administrateur CodeS-SourceS
ben si ta portion de cercle fait 12°, puis 13, 14 etc .. si ...

Peg'
mardi 13 avril 2010 à 21:16:37 | Re : api dessin as3

Ariranha

En effet vu sous cet angle .
Des demain je teste.

Merci et bonne soirée.
mercredi 14 avril 2010 à 10:57:32 | Re : api dessin as3

Ariranha

Bonjour,

Je me suis donc dirigé vers une autre méthode, qui me permettra de gerer le cercle par son angle et donc de faire un ratio entre le temps et l'angle.

N'étant pas encore a mon aise en as3 je me retrouve confornter à un petit problème. J'ai crée une fonction "générique" que je veux par la suite appliquer a un MovieClip. En as 2 il suffisait de faire un truc du genre :

Code ActionScript :
MovieClip.function(param1, param2, param3, etc.);


En as3 doit falloir passer par un addEventListener mais lequel ?

Merci et bonne journée.
mercredi 14 avril 2010 à 12:06:09 | Re : api dessin as3

pegase31

Membre Club Administrateur CodeS-SourceS
heu .. ça dépend de ce que tu feux faire exactement.

Les déclarations de fonction en as2/3 n'ont pas changés ...

Peg'
mercredi 14 avril 2010 à 13:21:09 | Re : api dessin as3

Ariranha

J'ai le code ci-dessous, qui lors de la compilation m'affiche l'erreur suivante :

TypeError: Error #1006: tracerCercle n'est pas une fonction.
at timerJeu_v2_fla::MainTimeline/frame1()

Je pensais que cela venait de la déclaration de fonction :

Code ActionScript :
secteur0.tracerCercle(angleEnRadians, rayon0, 50, "0xCC3300", 100);


Code ActionScript :
//a est la mesure (en radians) du secteur angulaire
//r est le rayon du secteur angulaire 
//n représente le nombre de points utilisés pour tracer un cercle complet 
//c est la couleur en hexadécimal
//t est la transparence 

var a:Number;
var r:Number;
var n:Number;
var c:String;
var t:Number;
var rayon:Number;
var teta:Number = 0;
var dteta:Number = 2 * Math.PI / n;

var _progress:Shape = new Shape();
addChild(_progress);

function tracerCercle(a, r, n, c, t):void {	
	_progress.graphics.clear();
	_progress.graphics.lineStyle(0,0,0);
	_progress.graphics.beginFill(c,t);
	_progress.graphics.moveTo(0,0);
	_progress.graphics.lineTo(rayon,0);
	
	while (teta < a) {
		var x:Number = r * Math.cos(teta);
		var y:Number =  -  r * Math.sin(teta);
		_progress.graphics.lineTo(x, y);
		teta += dteta;
	}
	
	x = r*Math.cos(a);
	y = - r*Math.sin(a);
	_progress.graphics.lineTo(x,y);
	_progress.graphics.lineTo(0,0);
	_progress.graphics.endFill();
}

var angleEnDegres:Number = 237;
var rayon0:Number = 80;
var secteur0:MovieClip = new MovieClip();
secteur0.x = 200;
secteur0.y = 150;
addChild(secteur0);
var angleEnRadians:Number = Math.PI*angleEnDegres/180;

secteur0.tracerCercle(angleEnRadians, rayon0, 50, "0xCC3300", 100);
mercredi 14 avril 2010 à 13:54:10 | Re : api dessin as3

pegase31

Membre Club Administrateur CodeS-SourceS
apparemment, tu essayes d'accéder à une fonction dans ton movieClip, alors qu'il vient d'être créé ...
Je ne vois pas trop ce que tu veux faire, puisque ta fonction est déclarée dans le même niveau...

Tu essayes de faire un enterframe ou quelque chose du genre ?

Peg'
mercredi 14 avril 2010 à 14:04:04 | Re : api dessin as3

Ariranha

Je t'avoue que je suis un peu perdu en as3 car en as2 j'aurais fais un truc du genre :

Code ActionScript :
MovieClip.prototype.tracerUnSecteurAngulaire = function(a, r, n, c, t) {
	this.clear();
	this.lineStyle(0,0,0);
	this.beginFill(c,t);
	this.moveTo(0,0);
	this.lineTo(rayon,0);
	var teta = 0;
	var dteta = 2 * Math.PI / n;
	while (teta < a) {
		var x = r * Math.cos(teta);
		var y = -r * Math.sin(teta);
		this.lineTo(x,y);
		teta += dteta;
	}

	x = r * Math.cos(a);
	y = -r * Math.sin(a);
	this.lineTo(x,y);
	this.lineTo(0,0);
	this.endFill();
};

angleEnDegres = 237;
rayon0 = 80;
this.createEmptyMovieClip("secteur0",0);
secteur0._x = 200;
secteur0._y = 150;
angleEnRadians = Math.PI * angleEnDegres / 180;
secteur0.tracerUnSecteurAngulaire(angleEnRadians,rayon0,50,"0xCC3300",100);


Et la pas de problème le clip secteur0 apparait a l'écran.

Sinon pour répondre a ta question oui j'aurais aimé appliquer un EnterFrame par derrière au lancement d'un timer pour modifier la valeur angle. Ainsi j'aurais bien un cercle qui se forme au fur et à mesure de l'écoulement du timer.

1 2

Cette discussion est classée dans : bouton, progress, temps, var, graphics


Répondre à ce message

Sujets en rapport avec ce message

déplacer 1 bouton et 1 clip en même temps [ par lacramour ] est-ce-que quelqu'un saurait comment déplacer 1 bouton et 1 clip en même temps ?c'est à dire :je voudrais que, quand je déplace un bouton (startDrag) Activer/Désactiver bouton (duplicateMovieClip) [ par jennapotter ] Bonjour, Je cherche à désactiver le bouton survolé, et à le reactiver lorsqu'un autre est survolé. La liste de boutons est créée par un duplicateMovi Activer/Désactiver bouton (duplicateMovieClip) [ par jennapotter ] Je cherche à désactiver le bouton survolé, et à le reactiver lorsqu'un autre est survolé. La liste de boutons est créée par un duplicateMovie, dans un un duplicate qui me rend dingue [ par Koubiack2lux ] Bonsoir à tous, je vous fais un résumé rapide de la situation. J'ai fait, il y a un certain temps deja, une animation où un train passe de la droite à boutons appelant des swf externe [ par soficapuchon ] Bonjour je vous écrit car je suis débutante et j'ai un problème. Mon projet est de placer 17 boutons qui appellent en aléatoire des swf qui doivent se Animation très simple a corriger svp [ par michmichman ] Donc voila j'ai fais una animation toute conne dabord j'ais fais un bouton puis un clip:je veux que quand la personne a la souris au dessu du bouton l deplacement et reposition [ par gobgob74 ] bonjour, je reposte, car je galere trop.voila je voudrais me deplacer sur une image lorsque je clic sur un bouton, je voudrais que sa me deplace a un Problème : Point d'origine différent [ par makizar ] Bonjour,Etant débutant en ActionScript 3, je suis face à un problème que je n'arrive pas à résoudre.Je souhaite déplacer un clip en fonction du déplac bouton arrière plan aléatoire [ par masterjed ] Bonjour !Je suis en train de bosser mon nouveau portfolio en ligne, me disant que ce serait une bonne façon de m'attaquer à l'AS3 (en sachant que je s Pb sur un petit bout de code [ par tracto ] Bonjour,voila, je test une petite animation en flash avec un text de saisi appeler "text1",un text dynamique "text2" et un bouton.le but est de faire


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,072 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales