Un carré simple en AS3 ne s'affiche pas - pourquoi?? heck!!

Résolu
Signaler
Messages postés
4
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
Dernière intervention
28 janvier 2010
-
Messages postés
4
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
Dernière intervention
28 janvier 2010
-
Je n'avais pas touché à Flash depuis AS2; je ne comprends plus rien..!
J'essaie de créer dynamiquement un carré - la fonction est bien appelée et je peux retourner les propriétés du carré, mais le carré n'apparait pas.. quelle bonne âme aurait une idée?? C'est un truc à la con pour sûr..
(On dirait que tout devient de + en + compliqué... Je faisais ça en une ligne autrefois...) help..
Voici le code:

package src {
import flash.display.*;
import flash.events.*;
import flash.ui.*;
import flash.geom.*;

public class bandeau {
private var debut:int=189;
private var taille:int=100;
private var canvas:Sprite;

public function bandeau() {

var bmd:BitmapData = new BitmapData(taille, taille, false, 0xFF6B6B6B);
var bm:Bitmap = new Bitmap(bmd);
canvas=new Sprite();
canvas.addChild(bm);
canvas.x=50;
canvas.y=50;
//trace(canvas.visible);

}

} // fin class bandeau

} //fin package

6 réponses

Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
10
Bonjour,

Là tu crées un bitmapData que tu associes à un bitmap, puis tu crées un Sprite dans lequel tu affiches le bitmap, puis tu places le Sprite en 50:50 ...

Sauf que tu n'as pas affiché le Sprite dans ta liste d'affichage courante.

note1 : le sprite est actuellement inutile, le BMP faisant trés bien l'affaire tout seul.
note2 : ta class n'étends pas un displayObject, elle n'a donc pas de liste d'affichage

Peg'
Messages postés
4
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
Dernière intervention
28 janvier 2010

Merci de ta réponse; j'ai donc 'étendu le Sprite';
aussi essayé avec drawRect;
le pb est toujours là, pas d'affichage, alors que dans les 2 cas j'ajoute bien à la liste d'affichage non? (une fois via un sprite vide et une autre fois sans rien - comme dans exemples de tuto..); donc je sèche encore..:

package src {
import flash.display.*;
import flash.events.*;
import flash.ui.*;
import flash.geom.*;

public class bandeau extends Sprite{
private var canvas:Sprite;
private var rect:Shape=new Shape();

public function bandeau() {

rect.graphics.lineStyle(1);
rect.graphics.beginFill(0x000000,1);
rect.graphics.drawRect(125,0,150,75);
addChild(rect);

var bmd:BitmapData = new BitmapData(37, 37, false, 0xFF000000);
var bm:Bitmap = new Bitmap(bmd);

canvas=new Sprite();
canvas.addChild(bm);
canvas.x=50;
canvas.y=50;

trace(canvas.visible);
}
} // end main class bandeau

} //end package
Messages postés
4
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
Dernière intervention
28 janvier 2010

Merci de ta réponse.
Le sprite est dû au fait que j'ai besoin de faire des manips ensuite (sur alpha, etc) qui ne peuvent se faire que sur un MC.
Je ne comprends pas, excuse, quand tu dis 'tu n'as pas affiché le Sprite dans ta liste d'affichage courante'.
note2: 'ta class n'étends pas un displayObject, elle n'a donc pas de liste d'affichage ' : elle devrait? Comment fait-on? J'ai le bouquin de Moock - 1000 pages - 4 heures à bouquiner pour arriver à rien de satisfaisant - c'est dingue ce qu'est devenu Flash..
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
10
J'oubliais :

note3 : pour faire un simple carré, il u a une classe de dessin qui existe sur les displayObject : Graphics, qui a pleins de méthodes similaires à l'AS2 dont des nouvelles tels que drawCircle et drawRect très pratiques.

Peg'
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
10
pour ta class :

public class MaClass extends Sprite {  //par exemple

C'est à dire que ta class sera un Sprite à la base, elle aura toutes les propriétés de l'objet qu'elle étends et pourra être manipulée comme tel.

Ce qui fait que tu peux dessiner dessus ou lui ajouter des éléments graphiques, car elle aura une liste d'affichage.

Pour ton Sprite :

Quand tu fais "new Sprite()" tu crées un Sprite vide, qui est en mémoire. Pour l'afficher, tu dois le placer dans la liste d'affichage d'un objet déjà présent sur la scène, avec DisplayObjectContainer.addChild();

C'est comme avoir un tableau et des objets dans une boîte à y placer.

Peg'
Messages postés
4
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
Dernière intervention
28 janvier 2010

Je me demande si le pb n'est pas lié à mon appel à la classe;
sur le frame 1 de la time line j'ai:

var whatever:bandeau = new bandeau();

c'est pas correct?
-----------------------------------------
car je viens de tester le code du bouquin:
http://www.moock.org/eas3/examples/moock_eas3_examples/eas3_greeting_app/src/GreetingApp.as
et ça ne marche pas de la même manière...