star screensaver. - Flash/ActionScript - Programmation
Marsh Posté le 13-07-2006 à 00:06:56
ça s'appelle un starfield.
c'est tout simple, tu attaches des clips au centre de la vue, et tu les déplaces vers une destination tirée au sort. Seulement tu utilises le système de coordonnées polaires à la place du repère cartésien pour tirer au sort ton point de destination.
En procédant ainsi, tes points vont forcément rayonner de manière circulaire.
pour mémoire, la conversion des coord polaires en coord cartésiennes se fait avec la formule suivante :
x = r cos theta
y = r sin theta
après tu fais grossir le point le long du trajet.
pour la gestion de la longueur focale, regarde sur kirupa.com - il utilise pas les coordonnées polaires, son starfield étant fixe, à toi de l'adapter, il y a pas grand chose à faire.
c'est une méthode parmi d'autres, bien sûr.
our transformer le tout en economiseur d'ecran, utilise Zinc ou Screenweaver.
Marsh Posté le 13-07-2006 à 01:40:08
wahouu!! châpeau!!
mais je connais aussi une manière plus simple si tu veux Dnville, le principe est de créer tes étoiles au centre de la scène puis de leurs attribuées à chacunes en propriété le pas de déplacement qu'elles effectueront a chaques rafraichissement de l'enterframe...
ex pour un clip "etoile":
etoile.pasX = 5-Math.random(10);
etoile.pasY = 5-Math.random(10);
le pas sera donc compris entre -5 et 5, donc vers le bas ou vers le haut en Y et donc vers la gauche la droite en X
tu place ça dans une fonction "initEtoile" que tu relance à chaque fois qu'une étoile sort de l'écran...
si tu veux plus d'effet tu modifie l'alpha des etoiles en fonction de la distance (plus elles sont proches du centre plus l'alpha est faible (c'est la distance focale comme a précisé craps_youpla..
Marsh Posté le 13-07-2006 à 02:56:57
whaou.. thanks les gars. je pensais que ca serai plus simple mais ca a l'air jouable qd meme..
je vais m'y mettre.
Marsh Posté le 14-07-2006 à 01:01:00
sympa ta méthode djam69, ça doit même être plus rapide à calculer, logiquement.
par contre, n'utilise jamais onEnterFrame : si le player galère (ici, il y a beaucoup de clips animés en _alpha), il jouera les frames moins vite, donc ton anim ralentira, et sa durée totale sera donc logiquement rallongée. on appelle ça de l'animation frame-based.
la bonne méthode, l'animation time-based, consiste à chaque frame à calculer le temps mis par le player pour l'afficher. si le temps est supérieur au temps théorique, tu ne dessines pas la suivante (ni la suivante, ni la suivante, etc.). On appelle ça le frame-dropping. On procédant comme ça, tu auras + de FPS sur une machine rapide, - de FPS sur une machine lente, mais ton anim respectera sa durée réelle, donc elle ne ralentira pas (elle saccadera à la place). c'est donc l'opposé du frame-based, où TOUTES les frames sont dessinées successivement, même s'il faut 1 sec. pour dessiner chaque frame. cf. la conférence de Moock au Flash-Forward 2004.
et franchement un starfield time-based avec gestion de la focale + interaction souris, ça ramone
Marsh Posté le 12-07-2006 à 22:18:17
comment faire soi meme l'economiseur d'ecran avec les fameuses etoiles qui avancent, a la star wars ??
si qqn pouvait m'aider, sympa..