Forums Développement Multimédia

Aller au contenu

Spécifier le chemin d'accès a un package perso

CODE Actionscript

8 réponses à ce sujet

#1 callingelvis

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 160 messages

Posté 15 November 2008 - 13:42 PM

Bonjour,

Apres avoir créé un package perso qui étend la classe Maths, je n'arrive pas à l'utiliser.
La méthode import ne le trouve pas.

voici le package pack_maths.as:

// PREREQUIS :
//
// Isaac Newton constante de gravitation
// G = 6.674 28(67) x 10-11 m3 kg-1 s-2
//
// Loi d attraction d Isaac Newton : F = G · m1 · m2 / d²
//
// F : intensite de la force d'attraction d un corps 1 vers un corps 2
// G : constante de gravitation universelle
// m1 : poids en kg du coprs 1
// m2 : poids en kg du coprs 2
// d : distance en mètre séparant les 2 corps
//
//

package pack_maths{
public class Loi_Attraction_Universelle extends Math {
// declaration membres prives
private const G:Number=6.6742867*pow(10,-11);
// parametres entrees
// m1 : masse en kg du corps 1
// m2 : masse en kg du corps 2
// d : distance en metre separant les 2 corps
public function get_ForceGravitationnelle(m1,m2,d):Number {
return G*(m1*m2)/pow(d,2);
}
}
}




J'aimerais spécifier un chemin où je gère mes propres package ce que je pensais pouvoir configurer dans Modifier->préférences->actionscript->Parametre d AS3->chemin Source en indiquant le chemin où se trouve mon package "pack_maths.as" mais ceci ne fonctionne pas.
1172: La définition pack_maths:Loi_Attraction_Universelle est introuvable.


J'ai également créer un répertoire appelé pack_maths sans succès.

Merci pour votre aide.







#2 Logic

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 2733 messages

Posté 15 November 2008 - 14:30 PM

Petit piège. Selon la doc:

Citation
The Math class contains methods and constants that represent common mathematical functions and values.

Package Top Level
Class public final class Math
Inheritance Math Inheritance Object


Ecrit comme ça, ça ne mange pas de pain... et pourtant juste un petit mot peut tout changer

Citation
final


Car final veut dire... veut dire...

Modifié par Logic, 15 November 2008 - 14:31 PM.


#3 callingelvis

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 160 messages

Posté 15 November 2008 - 14:43 PM

Citation (Logic @ Nov 15 2008, 01:30 PM) Voir le message
Petit piège. Selon la doc:
Ecrit comme ça, ça ne mange pas de pain... et pourtant juste un petit mot peut tout changer
Car final veut dire... veut dire...



Je débute en AS3 alors ce mot là je ne vois pas où l'ajouter exactement;


Je souhaite juste encapsuler dans un package lois.as une classe loi qui comprend des methodes de calcul renvoyer simplement un resultat.
J'ai mis le mot clé final ici apres classe mais je ne sais pas où placer mon .as exactement.
Qu'il soit a la racine ou dans un repertoire "lois" la commande import lois.Loi_Attraction_Universelle; ne fonctionne pas dans mon fla.

Action Script


package lois
{
public class final Loi_Attraction_Universelle extends Math
{
// declaration membres prives
private const G:Number = 6.6742867 * pow(10,-11);
// parametres entrees
// m1 : masse en kg du corps 1
// m2 : masse en kg du corps 2
// d : distance en metre separant les 2 corps
public function get_ForceGravitationnelle(m1,m2,d):Number
{
return G*(m1*m2)/pow(d,2);
}
}
}


Modifié par epanda, 15 November 2008 - 14:46 PM.


#4 0900.am

  • Members
  • PipPipPipPipPipPipPipPip
  • 1505 messages

Posté 15 November 2008 - 15:05 PM

comme le précise logic, final ça veut dire que tu ne peux pas étendre la classe donc

Action Script



extends Math


ne marchera pas

#5 Logic

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 2733 messages

Posté 15 November 2008 - 15:12 PM

Citation
e débute en AS3 alors ce mot là je ne vois pas où l'ajouter exactement;


Je ne t'ai pas dit de l'ajouter, c'était plutôt une invitation à le comprendre...

#6 callingelvis

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 160 messages

Posté 15 November 2008 - 15:20 PM

Citation (Kubrick @ Nov 15 2008, 02:05 PM) Voir le message
comme le précise logic, final ça veut dire que tu ne peux pas étendre la classe donc

Action Script



extends Math


ne marchera pas




1-ok merci c'est plus explicite comme ca.

Donc admettons que je ne puisse l'étendre, je veux quand même me créer un package perso contenant des lois mathématiques, j'arrive à l'importer dans mon fla en le placant dans un répertoire lois/lois.as

par contre l'instanciation ne fonctionne pas :
1046: Ce type est introuvable ou n'est pas une constante de compilation : Loi_Attraction_Universelle.

Action Script


import lois.lois;

var maLoiGravitationelle:Loi_Attraction_Universelle = new Loi_Attraction_Universelle();



Action Script


package lois
{
public class Loi_Attraction_Universelle
{
// declaration membres prives
private const G:Number = 6.6742867 * pow(10,-11);
// parametres entrees
// m1 : masse en kg du corps 1
// m2 : masse en kg du corps 2
// d : distance en metre separant les 2 corps
public function get_ForceGravitationnelle(m1,m2,d):Number
{
return G*(m1*m2)/pow(d,2);
}
}
}





2-D'autre part j'aimerai gérer un répertoire à part , où je peux placer tous mes package communs à mes projets, comment je spécifie ceci à flash ?

#7 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 15 November 2008 - 15:24 PM

Salut,

1)
Pourquoi loi.lois ?

Action Script

import nomDuPackage.siYenAPlusieurs.NomDeLaClasse;

var toto:NomDeLaClasse = new NomDeLaClasse();

2)
Il faut ajouter le dossier dans le chemin de classe global de Flash (préférences, actionScript, ...), à ne pas confondre avec celui qui se trouve dans les params de publication et qui ne concerne que ce FLA.

#8 info

    Ceinture Jaune

  • Members
  • PipPip
  • 27 messages

Posté 15 November 2008 - 15:24 PM

tu dois appeler ton fichier du meme nom de ta classe. En l'occurence "Loi_Attraction_Universelle.as"

#9 callingelvis

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 160 messages

Posté 15 November 2008 - 16:28 PM

Citation (16ar @ Nov 15 2008, 02:24 PM) Voir le message
tu dois appeler ton fichier du meme nom de ta classe. En l'occurence "Loi_Attraction_Universelle.as"



D'apres le tuto de mediabox il est dit que la classe doit commencer par une lettre en majuscule et le nom du package doit etre en minuscules.

Il est également dit que si on le place dans un répertoire spécifique et non à la racine du fla il faut donner l'instruction d'import.

Action Script


package jeu {
public class Joueur {}
}

import jeu.Joueur;


En cherchant à calquer le tuto à mon package de lois je place dans un répertoire lois le fichier "Lois_physiques.as"

Avec l'écriture suivante du package :

Action Script


package lois
{

public class Lois_physiques
{
// declaration membres prives
private const G:Number = 6.6742867 * Math.pow(10,-11);

// parametres entrees
// m1 : masse en kg du corps 1
// m2 : masse en kg du corps 2
// d : distance en metre separant les 2 corps
public function Loi_Attraction_Universelle(m1,m2,d):Number
{
return G*(m1*m2)/Math.pow(d,2);
}
}
}


Et le fla d'appel suivant :

Action Script


import lois.Lois_physiques;
var monInstanceLois:Lois_physiques = new Lois_physiques();

const rayonTerrestre:Number=40000000/(2*Math.PI); // (rayon = circonference / 2PI) => (40 000 km / 2PI)
const poidsPortable:Number=0.1; // ~100g
const masseTerre:Number = 5.9742*Math.pow(10,24) // masse de la Terre = 5,9742 × 10^24 kilogrammes
const masseHumain:Number=80; // 80kg

trace("La force d'attraction d'un objet de 100g placé à la surface de la terre est de " + monInstanceLois.Loi_Attraction_Universelle(poidsPortable,masseTerre,rayonTerrestre) + " Newton(s) ou m·kg·s–2.");
trace("La force d'attraction d'1 kg de sucre placé à la surface de la terre est de " + monInstanceLois.Loi_Attraction_Universelle(1,masseTerre,rayonTerrestre) + " Newton(s) ou m·kg·s–2.");
trace("La force d'attraction d'un humain de 80kg placé à la surface de la terre est de " + monInstanceLois.Loi_Attraction_Universelle(masseHumain,masseTerre,rayonTerrestre) + " Newton(s) ou m·kg·s–2.");



L'import , l'instanciation et le calcul se passent bien.
La sortie est la suivante :
Citation
La force d'attraction d'un objet de 100g placé à la surface de la terre est de 0.9838397601012274 Newton(s) ou m·kg·s–2.
La force d'attraction d'1 kg de sucre placé à la surface de la terre est de 9.838397601012272 Newton(s) ou m·kg·s–2.
La force d'attraction d'un humain de 80kg placé à la surface de la terre est de 787.0718080809818 Newton(s) ou m·kg·s–2.


Merci pour votre aide je vais maintenant spécifier a flash un chemin générique commun où je placerait tous les packages.

Modifié par epanda, 15 November 2008 - 16:32 PM.




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

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