Drag objet par objet

245678

Réponses

  • CeetixCeetix Membre
    03:37 modifié #32
    arf oui merdouille.
    Le truc c'est que je veux pouvoir m'en reservir des objet que je dessine .
    Et on peux pas genre les mettre dans mon tableauRect et ensuite mettre le tout dans un NSArray . A chaque appelle de drawRect je mets mes objets dans MutableArray quand ma boucle for est finie je met son contennue dans un Array dont j'ai pris soin de réinitialiser a chaque appel, et je libere mon MutableArray.

    Enfin de toute facon pour le moment ça marche meme pas mon code :s
  • schlumschlum Membre
    03:37 modifié #33
    Mais pourquoi ne pas les ajouter dans le "initWithFrame"  ???
  • CeetixCeetix Membre
    03:37 modifié #34
    Donc faire plutôt :

    - (id)initWithFrame:(NSRect)frame {<br />&nbsp; &nbsp; self = [super initWithFrame:frame];<br />&nbsp; &nbsp; if (self) {<br />		tableauRect = [[NSMutableArray alloc] init];<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; x = 10;<br />		y = 10;<br /><br />		for(int i = 0 ; i&lt;2; i++)<br />		{<br />			<br />			Rectangle *objet = [[Rectangle alloc] initWhithX:x Y:y H:20 L:20 pX:x pY:y select:NO];<br />			[tableauRect addObject:objet];<br />			[objet release];<br />			<br />			x +=30;<br />		}<br />		<br />		<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; return self;<br />}
    


    Ok je vois, mais je comprends tjs pas pourquoi ça bug ...
  • schlumschlum Membre
    03:37 modifié #35
    Qu'est-ce qui buggue ?
  • CeetixCeetix Membre
    03:37 modifié #36
    Donc si je respect le code que j'ai mis en haut, je run mon app et mon app ne s'ouvre meme pas et la console m'affiche ca :

    console.jpg


    Sauf que je n'ai aucun insert: atIndex ni de CG ...
  • schlumschlum Membre
    03:37 modifié #37
    le "insertObject:atIndex:" c'est un appel interne... c'est pas ça le plus important. C'est qu'il dit que tu essaies d'insérer "nil"
    ça veut dire que soit ton constructeur de Rectangle, soit l'init renvoit nil.
  • CeetixCeetix Membre
    03:37 modifié #38
    bah je pense pas que ca soit rectangle vu que quand je vire tout et que je fais :

    <br />- (void)drawRect:(NSRect)rect {<br />	for(int i =0;i&lt;2;i++)<br />	{<br />		Rectangle *objet = [[Rectangle alloc] initWhithX:x Y:y H:20 L:20 pX:x pY:y select:NO];<br />	<br />	}<br />}<br />
    


    j'ai bien deux rectangles dans ma vue...
  • schlumschlum Membre
    03:37 modifié #39
    D'ailleurs c'est pas dû au "initWhithX" au lieu de sans doute "initWithX" ?
    Il n'y a pas un warning disant que le selector n'existe pas ?
  • schlumschlum Membre
    03:37 modifié #40
    dans 1237148937:

    bah je pense pas que ca soit rectangle vu que quand je vire tout et que je fais :

    <br />- (void)drawRect:(NSRect)rect {<br />	for(int i =0;i&lt;2;i++)<br />	{<br />		Rectangle *objet = [[Rectangle alloc] initWhithX:x Y:y H:20 L:20 pX:x pY:y select:NO];<br />	<br />	}<br />}<br />
    


    j'ai bien deux rectangles dans ma vue...



    Me dis pas que t'as fait encore la même bourde d'allouer les objets à  la fois dans le .nib et dans le code  :P
  • CeetixCeetix Membre
    03:37 modifié #41
    Non le seul warning que j'ai c'est "control reaches end of non-void function " pour ma méthode d'initialisation de rectangle :

    -(id)initWhithX:(CGFloat )x Y:(CGFloat )y H:(CGFloat )h L:(CGFloat)l pX:(CGFloat)pX pY:(CGFloat)pY select:(BOOL)select<br />{<br />	<br />	if(select == NO)<br />	{<br />		/* Je dessine mon rectangle */<br />		[[NSColor blueColor]set];<br />		NSRectFill(NSMakeRect(x,y,h,l));<br />	}<br />	else {<br />		[[NSColor redColor]set];<br />		NSRectFill(NSMakeRect(x,y,h,l));<br />	}<br />	<br />	/* Initialisation des deux points de ma droite */<br />	NSPoint p1 = NSMakePoint(x,y);<br />	NSPoint p2 = NSMakePoint(pX, pY);<br />	<br />	/* Je commence à  tracer ma droite */<br />	NSBezierPath *tracer = [NSBezierPath bezierPath];<br />	[tracer moveToPoint:p1];<br />	[tracer lineToPoint:p2];<br />	[tracer closePath];<br />	<br />	/* Ma droite sera bleue */<br />	[[NSColor blueColor] set];<br />	[tracer stroke];<br />	<br />	<br />}<br />
    



    Et dans mon nib : j'ai juste mis une NSView que je relie à  ma classe maVue, mais ma classe Rectangle je n'ai rien fait avec... Faut bien que je relie maVue a un Outlet quand même ? :)
  • schlumschlum Membre
    03:37 modifié #42
    dans 1237148937:

    bah je pense pas que ca soit rectangle vu que quand je vire tout et que je fais :

    <br />- (void)drawRect:(NSRect)rect {<br />	for(int i =0;i&lt;2;i++)<br />	{<br />		Rectangle *objet = [[Rectangle alloc] initWhithX:x Y:y H:20 L:20 pX:x pY:y select:NO];<br />	<br />	}<br />}<br />
    


    j'ai bien deux rectangles dans ma vue...



    Si tu as deux rectangles dans ta vue, ils sont forcément alloués autre part...
    Tu crois qu'un truc alloué comme ça dans le vent va venir se coller tout seul dans ta vue ?  :P

    À moins qu'il n'y ait du code que tu aies omis dans la boucle "for"...
  • AliGatorAliGator Membre, Modérateur
    03:37 modifié #43
    dans 1237149303:

    Non le seul warning que j'ai c'est "control reaches end of non-void function " pour ma méthode d'initialisation de rectangle :
    Bah et c'est bien ça le problème !! Ce warning te donne la solution !
    S'il te met un warning, c'est pas pour rien...

    Tu as une fonction "init...", sensée renvoyer un objet "id" comme tout bon init (renvoyer l'objet initialisé quoi)... et tu ne le renvoyes pas, aucun return dans ton init.
    Pas même de [super init] d'ailleurs...

    En bref, relis la doc sur les initialiseurs...
  • CeetixCeetix Membre
    03:37 modifié #44
    Arf, j'ai rajouté return self; dans ma méthode d'initialisation et l'app se lance bien ! Merci Ali.
    Par contre j'ai toujours pleins de ligne d'erreur dans ma console de type CGContext . C'est bizar.
    Et quand dans mon drawRect je mets dans mon for : tableauRect; il ne m'affiche qu'un rectangle.
  • schlumschlum Membre
    03:37 modifié #45
    dans 1237150113:

    Arf, j'ai rajouté return self; dans ma méthode d'initialisation et l'app se lance bien ! Merci Ali.
    Par contre j'ai toujours pleins de ligne d'erreur dans ma console de type CGContext . C'est bizar.
    Et quand dans mon drawRect je mets dans mon for : tableauRect; il ne m'affiche qu'un rectangle.


    Moi je m'inquiéterais du fait que t'avais 2 rectangles dans ta vue alors que le constructeur de Rectangle était HS avant tout...  :o

    PS : en anglais "with" ça s'écrit w i t h  :P
  • CeetixCeetix Membre
    03:37 modifié #46
    Une erreur de frappe, j'ai quand même mon toeic ^^ .

    Par contre je pige pas ce que tu veux dire avant . Tu peux détailler un peu s'il te plait?
  • schlumschlum Membre
    03:37 modifié #47
    dans 1237150411:

    Une erreur de frappe, j'ai quand même mon toeic ^^ .

    Par contre je pige pas ce que tu veux dire avant . Tu peux détailler un peu s'il te plait?


    Je ne fais que reprendre ce que tu disais :
    bah je pense pas que ca soit rectangle vu que quand je vire tout et que je fais :

    Code:
    [...]

    j'ai bien deux rectangles dans ma vue...


    ça ne t'inquiète pas de savoir d'où viennent ces deux rectangles ??
  • CeetixCeetix Membre
    mars 2009 modifié #48
    Disons que je ne vois pas comment ils sont appelés à  être imprimé sur ma vue puisque je ne fais que définir objet mais en même temps je ne vois pas comment dire a drawRect de prendre "objet" ou tableauRect et de l'imprimer.
    Enfin c'est peut-être pas très clair ce que je dis ...
  • schlumschlum Membre
    03:37 modifié #49
    Ben... "for(Rectangle r in tableauRect)" blablabla
  • CeetixCeetix Membre
    03:37 modifié #50
    eu je vais paraitre encore nul mais j'ai jamais vu cette forme de for ... En gros là  tu lui dis de parcourir le tableau mais tes blabla correspondent a quoi?
  • schlumschlum Membre
    03:37 modifié #51
    dans 1237152176:

    eu je vais paraitre encore nul mais j'ai jamais vu cette forme de for ... En gros là  tu lui dis de parcourir le tableau mais tes blabla correspondent a quoi?


    À l'appel d'une méthode "draw" par exemple  :P
    Ce "for" est la nouvelle méthode de parcourt de tableau en Objective-C 2.0

    Avant on utilisait la classe NSEnumerator
  • CeetixCeetix Membre
    03:37 modifié #52
    Ouch, j'ai encore du boulot :'(
    C'est:
    for(Rectangle *r in tableauRect)
    {
    Je dessine avec une methode
    }
  • schlumschlum Membre
    03:37 modifié #53
    Oui...
  • CeetixCeetix Membre
    03:37 modifié #54
    Ok ^^. C'est parti ! (enfin dodo d'abord )
  • GreensourceGreensource Membre
    03:37 modifié #55
    Dors bien, et bon courage ^^ (dsl pour le flood  o:) c'est ma spécialité)
  • CeetixCeetix Membre
    03:37 modifié #56
    Lol je vais faire des cauchemars . Je vais m'y mettre maintenant en fait ^^ .
  • CeetixCeetix Membre
    03:37 modifié #57
    J'y suis arrivé, j'ai relu des post pour m'aider et voilà , je joins l'app juste pour vous montrer ce que je voulais faire (pour commencer).
    C'est tout simple et ça va vus paraà®tre risible mais je suis content  :P .
    Encore quelques bug par contre...

    ICI l'app
  • CeetixCeetix Membre
    03:37 modifié #58
    Sinon, pour colorer un NSRect j'utilise [[NSColor redColor]set]; mais j'aimerai pouvoir composer ma couleur avec rvb mais quand je lis la doc apple je ne vois que des méthodes qui remplissent une liste de forme... Il y en a une pour remplir juste un NSRect ?
  • CeetixCeetix Membre
    03:37 modifié #59
    J'ai rien dit .... Je viens de trouver
    [[NSColor colorWithDeviceRed:1.0 green:1.0 blue:1.0 alpha:1.0]set];
  • CeetixCeetix Membre
    03:37 modifié #60
    Bonjour tout le monde.
    J'up ce post car j'ai avancé dans mon petit projet et je but sur un concept graphique.
    En effet, pour ceux qui connaissent les graphes, je construisais dans rectangle représentant ma matrice de continuité. Maintenant j'arrive, via la console, à  afficher ma liste d'adjacence. J'aimerai donc afficher cette liste graphiquement comme l'image ci-dessous ... Je vois pas trop comment faire :s
    Par exemple voici ce que j'affiche en mode console quand je construis ma liste :

    <br />Noeud 1 : <br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 2 ; attribut : 1<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 4 ; attribut : 5<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 6 ; attribut : 7<br />Noeud 2 : <br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 1 ; attribut : 1<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 3 ; attribut : 3<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 4 ; attribut : 1<br />Noeud 3 : <br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 2 ; attribut : 3<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 5 ; attribut : 1<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 8 ; attribut : 8<br />Noeud 4 : <br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 1 ; attribut : 5<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 2 ; attribut : 1<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 5 ; attribut : 1<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 6 ; attribut : 3<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 7 ; attribut : 9<br />Noeud 5 : <br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 3 ; attribut : 1<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 4 ; attribut : 1<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 6 ; attribut : 2<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 7 ; attribut : 4<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 8 ; attribut : 7<br />Noeud 6 : <br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 1 ; attribut : 7<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 4 ; attribut : 3<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 5 ; attribut : 2<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 7 ; attribut : 4<br />Noeud 7 : <br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 4 ; attribut : 9<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 5 ; attribut : 4<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 6 ; attribut : 4<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 8 ; attribut : 1<br />Noeud 8 : <br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 3 ; attribut : 8<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 5 ; attribut : 7<br />&nbsp; &nbsp; &nbsp;  -&gt;Noeud : 7 ; attribut : 1<br />
    



    Donc les noeuds contiennent une info (ici un chiffre) et les attributs sont les poids de chaque arc de mon graphe. Je voulais m'en servir pour définir leur longueur par exemple. Enfin déjà  j'aimerai relier mes carrés entre eux ... :s

    Merci pour votre aide ;)
    graphe3.gif
  • schlumschlum Membre
    03:37 modifié #61
    Ben... Tu dessines les points au pif et tu relies !  :)
Connectez-vous ou Inscrivez-vous pour répondre.