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

Résolu
tim2 Messages postés 4 Date d'inscription jeudi 18 mars 2004 Statut Membre Dernière intervention 28 janvier 2010 - 27 janv. 2010 à 16:40
tim2 Messages postés 4 Date d'inscription jeudi 18 mars 2004 Statut Membre Dernière intervention 28 janvier 2010 - 28 janv. 2010 à 10:13
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

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
27 janv. 2010 à 17:08
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'
3
tim2 Messages postés 4 Date d'inscription jeudi 18 mars 2004 Statut Membre Dernière intervention 28 janvier 2010
28 janv. 2010 à 10:06
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
3
tim2 Messages postés 4 Date d'inscription jeudi 18 mars 2004 Statut Membre Dernière intervention 28 janvier 2010
27 janv. 2010 à 17:16
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..
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
27 janv. 2010 à 17:21
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'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
27 janv. 2010 à 17:25
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'
0
tim2 Messages postés 4 Date d'inscription jeudi 18 mars 2004 Statut Membre Dernière intervention 28 janvier 2010
28 janv. 2010 à 10:13
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...
0
Rejoignez-nous