Effet rideaux de theatre en action script

Soyez le premier à donner votre avis sur cette source.

Vue 56 878 fois - Téléchargée 7 885 fois

Description

Ce fla vous permet de faire une animation dans le style levé de rideau TATANNNN !... Bréf rien de magique, à par qu'elle est faite en action script, ce qui vous permettra de la paramétrer un peu ;) ...

C'est ma premiére source sur flashKod, et je viens de commencer l'action script il y à trés peu de temps. Au niveau algo je me débrouille, mais je pige pas tout encore au niveau du fonctionement. C'est pour cela que je me pose 2 questions :

1 : Serait-il possible de dupliquer seulement les images de la bibliothéque sans pour autant passer par des movieclip - Je trouve ça fouilli qu'elles y soient en double.?

2 : Peut-on faire un symétrie axiale en flash ? Comme ça juste avec un seul rideau j'aurais pû tout faire ...

Source / Exemple :


// LA BIBLIOTHEQUE CONTIENT EN REALITE DEUX MOVIECLIP :
// rideaux -> L'image d'un rideau gauche
// rideaux_droite -> L'image d'un rideau a droite

// ------------------------- VERSION 2
// PARAMETRAGE DE L'ANIM
var top = -10;
var espace = 30;
var m_rand_esp = 10;
var rand_niveau = 2;
var nbRideaux = 9;
var decalage = 12;
var vitesse = 1;
var cID = _root.nbRideaux;
var vitesse_rotation = 0.2;
var vitesse_mvt = 1; // 1 = Maxi - 100 = Normal
var max_rotation = 8;
var timer = 0;

tirer = function (id, direction) { 
	var rideau = _root["r"+id];
	if (!_root["dir"+id]) {
		_root["dir"+id] = direction;
	}
	rideau._rotation += _root.vitesse_rotation * _root["dir"+id];
	if (rideau._rotation * _root["dir"+id]>=_root.max_rotation) {
		_root["dir"+id] *= -1;
	}
	
	rideau._x -= _root.vitesse * direction;
	if (rideau._x<-80 || rideau._x>570) {
		clearInterval(_root["timer"+id]);
	}
};

attendre = function () { 
	_root.timer += 1;
	if (_root.timer>_root.decalage) {
		_root.timer = 0;
		_root.cID -= 1;
		if (_root.cID<0) {
			clearInterval(_root.debutID);
		} else {
			_root["timer"+_root.cID] = setInterval(tirer, _root.vitesse_mvt, _root.cID, 1);
			var droite = _root.nbRideaux * 2 - _root.cID - 1;
			_root["timer"+droite] = setInterval(tirer, _root.vitesse_mvt, droite, -1);
		}
	}
};

for(i=0; i<nbRideaux; i++) {
	_root.attachMovie("rideaux", "r"+i, nbRideaux-i);
	_root["r"+i]._y = top + random(rand_niveau);
	_root["r"+i]._x = (i*espace) + (random(m_rand_esp) - (m_rand_esp/2));	
}
for(i=nbRideaux; i<nbRideaux*2; i++) {
	_root.attachMovie("rideaux_droite", "r"+i, i+1);
	_root["r"+i]._y = top + random(rand_niveau);
	_root["r"+i]._x = (i*espace) + (random(m_rand_esp) - (m_rand_esp/2));	
}

var debutID = setInterval(attendre, 1);
stop();

// ------------------------- VERSION 1
// PARAMETRAGE DE L'ANIM
var nbRideaux = 9;
var decalage = 12;
var vitesse = 1;
var cID = _root.nbRideaux;
var vitesse_rotation = 1;
var vitesse_mvt = 1; // 1 = Maxi - 100 = Normal
var max_rotation = 20;
var timer = 0;

tirer = function (id, direction) { 
	var rideau = _root["r"+id];
	if (rideau._rotation * direction<_root.max_rotation) {
		rideau._rotation += _root.vitesse_rotation * direction;
	} else {
		rideau._x -= _root.vitesse * direction;
		if (rideau._x<-40 || rideau._x>530) {
			clearInterval(_root["timer"+id]);
		}
	}
};

attendre = function () { 
	_root.timer += 1;
	if (_root.timer>_root.decalage) {
		_root.timer = 0;
		_root.cID -= 1;
		if (_root.cID<0) {
			clearInterval(_root.debutID);
		} else {
			_root["timer"+_root.cID] = setInterval(tirer, _root.vitesse_mvt, _root.cID, 1);
			var droite = _root.nbRideaux * 2 - _root.cID - 1;
			_root["timer"+droite] = setInterval(tirer, _root.vitesse_mvt, droite, -1);
		}
	}
};

for(i=0; i<nbRideaux; i++) {
	_root.attachMovie("rideaux", "r"+i, nbRideaux-i);
	_root["r"+i]._y = -20;
	_root["r"+i]._x = i*30;	
}
for(i=nbRideaux; i<nbRideaux*2; i++) {
	_root.attachMovie("rideaux_droite", "r"+i, i+1);
	_root["r"+i]._y = -20;
	_root["r"+i]._x = i*30;	
}

var debutID = setInterval(attendre, 1);
stop();

Conclusion :


Cette source est la réponse au souhait de l'auteur ayant rédigé cette source :
http://www.flashkod.com/codes/EFFET-RIDEAU-DE-THEATRE/30591.aspx

BurnSide avait dit : "Si quelqu'un sait comment créer l'effet via action script je suis preneur, c à dire via duplicate movie clip, et rajout de mouvement sur chaque movie clip dupliqués."

Bonne prog à tous, akh

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

pegase31
Messages postés
6161
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
6 -
C'est bien (même si en plus de 12 img/sec ce serait mieux), mais :

Pourquoi ne pas l'avoir fait tout simplement en animation ? tu sais, les interpolations d'images sont trés légères à gérer, tu règles le temps que tu veux, tu les décalles en anim simple et au final, tu te prends pas la tête sur des algos, tu allèges ton swf (ton code prends au moins 3 Ko) et tu gagnes du temps ... Mais libre à toi de te claquer la tête contre les murs !

Le "tout en code" n'est pas une bonne solution sous flash, sauf pour des déplacements dynamique. C'est bien de vouloir faire "pro", mais là, tu as perdu du temps, des neurones et trés franchement, vu le résultat, je ne suis pas motivé pour regarder ton code.

Mais tu vas me dire que c'est paramétrable ? Ben en anim aussi elle l'est ! Juste que tu devras déplacer une frame au lieu de changer un chiffre ...

Peg'
Partisan du simple plutôt que tu prise-de-tête-inutile
cs_goldenboy68
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
1 -
Pour répondre à tes questions:
1. Je crois pas que ce soit possible
2. Tu peux utiliser _xscale et _yscale en négatif

//***********************************************************
Voilà...sinon pourquoi sur un site parlant de flash, on n'a pas d'aperçu des SWF directement avec la source????

Remarque perso désolé! lol

@+! Samy
aKheNathOn
Messages postés
285
Date d'inscription
dimanche 22 juillet 2001
Statut
Modérateur
Dernière intervention
5 décembre 2013
-
Lut peg, tu vas pas me croire mais je sais pas me servir de flash... alors quand tu me dit interpolation, déjà là je suis paumé ... je saurais pas le faire autrement qu'en AS. De plus vu que j'apprend pour moi c plus simple de le faire en AS et aussi plus utile dans le futur car je vais commencer à gérer petit à petit toutes les fonctionnalités de flash.

J'ai commencé à lire un boukin de flash, je me suis arrété dégouté quand j'ai vu les calques de mouvement... C'est trop tordu, rien que pour arriver à faire une anim en AS. Rien de ressemblant avec les autres framework de programmation.

Sinon pour ce qui est de ta remarque je pense que cette source doit utiliser ce que tu essayes de m'expliquer :
http://www.flashkod.com/codes/EFFET-RIDEAU-DE-THEATRE/30591.aspx

Allez, promis la prochaine sera plus optimisée, akh
on_drag_on
Messages postés
1275
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
6 octobre 2010
-
ben moi chu pas d'accord avec toi Akenathon, y'a pas plus simple que de faire une interpolation et tu gagnes à mon avis une ch... de temps. seulement les bourqins pour débutants te mettent 53 pages pour te l'expliquer et les autres ben pas de pages du tout. je t'ai fait un tutos pour la base (12i/s, interpol, etc...) ce qui serait cool vu que t'as l'air d'avoir du temps ;-) ce serait de faire un tutos du genre (SIMPLE et CLAIR) sur les variables, les composants, les boucles ... enfin l'AS quoi.
c'est tout ce que je voulais dire.
A+.
pastel13
Messages postés
2
Date d'inscription
vendredi 19 avril 2013
Statut
Membre
Dernière intervention
9 décembre 2014
-
bonjour on_drag_on,on le trouve ou ton tuto? merci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.