Object.watch; à l'aide du newval au sein de la fonction appelée.

  • DrGonzo
  • Beginner
  • Beginner
  • No Avatar
  • Inscription: Oct 04, 2006
  • Messages: 36
  • Status: Offline

Message Janvier 24th, 2008, 8:23 am

Salut les gars,
Im essayant de maigrir un peu de code, qui utilise actuellement un onEnterFrame () pour additionner certaines boîtes de texte et afficher une mise à jour »des prix».

à savoir:
Code: [ Select ]
onEnterFrame = function(){
    itemTotal_txt.text = String("Price: £")+Number(Number(price1_txt.text)+Number(price2_txt.text)+Number(price3_txt.text)+Number(price4_txt.text));
}
  1. onEnterFrame = function(){
  2.     itemTotal_txt.text = String("Price: £")+Number(Number(price1_txt.text)+Number(price2_txt.text)+Number(price3_txt.text)+Number(price4_txt.text));
  3. }

Ive a joué avec la fonction Object.watch, donc je peux éviter d'utiliser onEnterFrame et mon code ressemble à ceci à la place;
Code: [ Select ]
function watch_price(prop,oldval,newval){
    itemTotal_txt.text = String("Price: £")+Number(Number(price1_txt.text)+Number(price2_txt.text)+Number(price3_txt.text)+Number(price4_txt.text));
    return newval;
}
price1_txt.watch("text",watch_price);
price2_txt.watch("text",watch_price);
price3_txt.watch("text",watch_price);
price4_txt.watch("text",watch_price);
  1. function watch_price(prop,oldval,newval){
  2.     itemTotal_txt.text = String("Price: £")+Number(Number(price1_txt.text)+Number(price2_txt.text)+Number(price3_txt.text)+Number(price4_txt.text));
  3.     return newval;
  4. }
  5. price1_txt.watch("text",watch_price);
  6. price2_txt.watch("text",watch_price);
  7. price3_txt.watch("text",watch_price);
  8. price4_txt.watch("text",watch_price);

Le problème est que lorsque la fonction watch_price est appelée, elle ajoute l'ancienne valeur de la zone de texte modifié, pas la nouvelle valeur. Ive a essayé retour "newval" avant d'ajouter les boîtes ensemble, mais qui empêche la survenance calulating à tous et Ive a également essayé de mettre...
Code: [ Select ]
-Number(oldval)+Number(newval)

...dans le calucaltion, mais il retourne juste indéfini.

Est-ce que quelqu'un sait comment mettre à jour la valeur zone de texte avant d'exécuter la fonction?

Merci,

Dr G.
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Janvier 24th, 2008, 8:23 am

  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 11, 2005
  • Messages: 1828
  • Loc: In the Great White North
  • Status: Offline

Message Janvier 24th, 2008, 12:14 pm

Im pas bien sûr le problème exact que vous ayez, mais je pense que le Object.watch () peut être exagéré un peu et je pense que finalement une chose difficile à mettre en œuvre avec un champ de texte. J'ai toujours compris la montre () fonction de vérification pour voir si une propriété a changé (_height, _alpha), etc

Si je comprends bien, vous voulez prendre un peu de champs de texte et ajouter leur valeur actuelle, même après que la valeur est modifiée par un utilisateur.

Donc, je ferais ceci à la place
Code: [ Select ]
price1_txt.onChanged = function(){
   this._parent.updatePrice();
}
function updatePrice(){
   var price:Number = Number(price1_txt.text)+Number(price2_txt.text)+Number(price3_txt.text)+Number(price4_txt.text);
itemTotal_txt.text = "Price: £"+price;
}
  1. price1_txt.onChanged = function(){
  2.    this._parent.updatePrice();
  3. }
  4. function updatePrice(){
  5.    var price:Number = Number(price1_txt.text)+Number(price2_txt.text)+Number(price3_txt.text)+Number(price4_txt.text);
  6. itemTotal_txt.text = "Price: £"+price;
  7. }


Donc, l'affaire est ici que TextField.onChanged se produit chaque fois que le champ est modifié. Vous pouvez ajouter en substance que même code pour chaque champ de texte.
If at first you don't succeed F1... If that doesn't work try Google!
//// Designer, Developer & Teacher - Interactive, Motion and 3D \\\\
Portfolio at WhenImNotSleeping.com
  • DrGonzo
  • Beginner
  • Beginner
  • No Avatar
  • Inscription: Oct 04, 2006
  • Messages: 36
  • Status: Offline

Message Janvier 25th, 2008, 4:36 am

Salut Graphixboy,
Le problème, c'est que le prix des boîtes sont changées dynamiquement, sur la base d'une série de if / else déclarations...Je pourrais ajouter le updatePrice () pour que la déclaration - c'est-à-dire chaque fois qu'il ya une si (somthing) = (price_txt.text (quelque chose) -, mais il semble que beaucoup de lignes de code supplémentaires...C'est une honte que onChanged ne fonctionne pas dynamiquement....
  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 11, 2005
  • Messages: 1828
  • Loc: In the Great White North
  • Status: Offline

Message Janvier 25th, 2008, 6:13 am

Ahh que de bon sens. Avez-vous essayé le setInterval () pour vérifier la place. Vous pouvez vérifier quelque chose, comme à chaque seconde et thats processeur beaucoup moins intensive que la onEnterFrame
If at first you don't succeed F1... If that doesn't work try Google!
//// Designer, Developer & Teacher - Interactive, Motion and 3D \\\\
Portfolio at WhenImNotSleeping.com

Afficher de l'information

  • Total des messages de ce sujet: 4 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 68 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC