Forums Développement Multimédia

Aller au contenu

- - - - -

as3 probleme getter qui pointe sur le constructeur

CODE as3

7 réponses à ce sujet

#1 pcxpert

    Ceinture Orange

  • Members
  • PipPipPip
  • 32 messages

Posté 12 July 2014 - 02:57 AM

Bonsoir, je sais qu'il y a de nombreux poste sur le sujet mais j'ai beau essayer mais je ne comprend vraiment pas d'ou provient mon erreur. Je ne sais pas si il y a un bug ou non mais mon bouton enter ne semble pas functionner alors dsl. voici ce que j'ai dans ma classe DefaultItem.


private var _isDragging:Boolean = false;                                                                                                                                                                                           

private function onMouseDownHandler(e:MouseEvent):void
  {
   isDragging = true;
                                                this.mouseEnabled = false;
          dispatchEvent(new ItemEvent(ItemEvent.ITEM_PICKED_UP, this));
  }
 
  private function onMouseUpHandler(e:MouseEvent):void
  {
   // check if item is being dragged
   if (isDragging)
   {
        isDragging = false;
        this.mouseEnabled = true;
        dispatchEvent(new ItemEvent(ItemEvent.ITEM_DROPPED, this));
   }
  }                                                                                                                                                                                                                                                                                                                                                
public function get isDragging():Boolean
  {
   return _isDragging;
  }
 
  public function set isDragging(value:Boolean):void
  {
   _isDragging = value;
  }      
 


et maintenant dans une autre classe je veux recuperer la valeur de _isDragging (true ou false)


var defaultitem:DefaultItem = new DefaultItem();         
//  trace(defaultitem.getisDragging);    
 



J'ai toujours la meme erreur 1136: Incorrect number of arguments. Expected 4
(ce qui corespond a mon constructeur)
merci

#2 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 12 July 2014 - 17:05 PM

Salut et bienvenue,

Montre nous la classe complète s'il te plait, car là il manque le constructeur sur lequel tu semble avoir une erreur.
Si je comprend bien ton problème, ce n'est pas un problème de "isdragging" mais un problème au moment où tu initialise ton objet.

#3 pcxpert

    Ceinture Orange

  • Members
  • PipPipPip
  • 32 messages

Posté 13 July 2014 - 07:09 AM

/**
* Inventory System Manager
* ---------------------
* VERSION: 1.1.2
* DATE: 07/25/2011
* AS3
* UPDATES AND DOCUMENTATION AT: [url="http://www.FreeActionScript.com"]http://www.FreeActionScript.com[/url]
**/

package com.freeactionscript.inventorySystem.display.item
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;

import com.freeactionscript.inventorySystem.display.container.DefaultContainer;
import com.freeactionscript.inventorySystem.display.container.Slot;
import com.freeactionscript.inventorySystem.display.container.Level;
import com.freeactionscript.inventorySystem.event.ItemEvent;

/**
  * Constructor
  */

public class DefaultItem extends MovieClip
{
  private var _id:String;
  private var _lastX:int;
  private var _lastY:int;
  private var _isStackable:Boolean = false;
  private var _type:String;
         private var _isDragging:Boolean = false;
  private var _currentContainer:DefaultContainer;
  private var _lastContainer:DefaultContainer;
 
  public function DefaultItem($id:String, $type:String, $x:int, $y:int)
  {
   stop();
 
   id = $id;  
   type = $type;
 
   x = $x;
   y = $y;
   addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
 
 
  }
 
  private function onAddedToStage(e:Event):void
  {
   removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
   init();
  }
 
  public function init():void
  {
   buttonMode = true;
   mouseChildren = false;
 
   _lastX = x;
   _lastY = y;
 
   addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);
   addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler);
                        this.stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);      //anti bug pour le drop       
  }
 
  /**
   * Mouse Event Handlers
   */
 
  private function onMouseDownHandler(e:MouseEvent):void
  {
   isDragging = true;
                                                this.mouseEnabled = false;
          dispatchEvent(new ItemEvent(ItemEvent.ITEM_PICKED_UP, this));
  }
 
  private function onMouseUpHandler(e:MouseEvent):void
  {
   // check if item is being dragged
   if (isDragging)
   {
        isDragging = false;
        this.mouseEnabled = true;
        dispatchEvent(new ItemEvent(ItemEvent.ITEM_DROPPED, this));
   }
  }
 
  /**
   * Getters & Setters
   */

  public function get id():String { return _id; }
 
  public function set id(value:String):void
  {
   _id = value;
  }
 
  public function get lastX():int { return _lastX; }
 
  public function set lastX(value:int):void
  {
   _lastX = value;
  }
 
  public function get lastY():int { return _lastY; }
 
  public function set lastY(value:int):void
  {
   _lastY = value;
  }
 
 
  public function get currentContainer():DefaultContainer { return _currentContainer; }
 
  public function set currentContainer(value:DefaultContainer):void
  {
   _currentContainer = value;
  }
 
  public function get lastContainer():DefaultContainer { return _lastContainer; }
 
  public function set lastContainer(value:DefaultContainer):void
  {
   _lastContainer = value;
  }
 
  public function get type():String
  {
   return _type;
  }
 
  public function set type(value:String):void
  {
   _type = value;
  }
 
  public function get isDragging():Boolean
  {
   return _isDragging;
  }
 
  public function set isDragging(value:Boolean):void
  {
   _isDragging = value;
  }
 
  /**
   * Destroys item
   */

  public function destroy():void
  {
   buttonMode = false;
   removeEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);
   removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler);
   this.stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);
  }
 
}

}


#4 pcxpert

    Ceinture Orange

  • Members
  • PipPipPip
  • 32 messages

Posté 13 July 2014 - 07:10 AM

merci spi pour votre aide

#5 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 13 July 2014 - 09:39 AM

Avec ce code tu crée un nouvel objet, à l'aide du mot clée "new" tu appelle son constructeur.

var defaultitem:DefaultItem = new DefaultItem();

Lorsque tu appelle le constructeur tu appelle cette ligne dans ta classe :


public function DefaultItem($id:String, $type:String, $x:int, $y:int)
{
//...
}
 

C'est cette fonction le constructeur de l'objet, et elle attend 4 paramètres : son id, son type, sa position sur x et sur y

L'erreur renvoyée est donc normale, il te faut construire ton objet selon les paramètres requis, un truc du genre :

var defaultitem:DefaultItem = new DefaultItem("item", "boite", 100, 50);

A toi de trouver à quoi correspondent les "id" et "type"...

#6 pcxpert

    Ceinture Orange

  • Members
  • PipPipPip
  • 32 messages

Posté 13 July 2014 - 17:31 PM

Bonjour spi , alors si je comprend bien je dois donner les infos requis au constructeur avant de pouvoir appeler une de ces function? merci

#7 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6954 messages

Posté 13 July 2014 - 19:44 PM

Le constructeur est la fonction qui construit l'objet.
Si ton objet requiert certains paramètres pour fonctionner alors tu devra lui renseigner ces paramètres quand tu le crée (au moment où tu utilise le mot clé "new" qui appelle le constructeur de ton objet pour en faire une nouvelle instance).

Les fonction (appellées "méthodes") d'une classe peuvent ensuite être static, public, private, ... et donc accessible depuis diiférents endroits et avec initialisation ou pas, mais ce n'est pas là ton problème.

#8 pcxpert

    Ceinture Orange

  • Members
  • PipPipPip
  • 32 messages

Posté 14 July 2014 - 17:02 PM

Bonjour spi :) je vous dit un gros MERCI tout functionne maintenant hehe




Répondre à ce sujet



  

1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP