Se connecter / S'enregistrer
Votre question

Problème actionScript 3 programation page contact

Tags :
  • Flash
  • actionscript
  • boucle
  • Programmation
Dernière réponse : dans Programmation
22 Mai 2012 08:37:09

Bonjour,
Je suis en ce moment en train de créer un site en full flash et j'ai un gros problème que je n'arrive pas à régler depuis 1 semaine.
Je vous envoie donc ma page ContentPage.as et Contact.as:
Contact.as
  1. package fr.odin.content
  2. {
  3. import com.greensock.TweenMax;
  4.  
  5. import flash.display.DisplayObject;
  6. import flash.display.SimpleButton;
  7. import flash.events.MouseEvent;
  8. import flash.net.URLLoader;
  9. import flash.net.URLRequest;
  10. import flash.net.URLRequestMethod;
  11. import flash.net.URLVariables;
  12. import flash.text.TextField;
  13. import flash.utils.Dictionary;
  14.  
  15. public class Contact extends ContentPage
  16. {
  17. public var sendBtn:SimpleButton;
  18. public var formPrenom:TextField;
  19. public var formNom:TextField;
  20. public var formAdresse:TextField;
  21. public var formVille:TextField;
  22. public var formCodePostal:TextField;
  23. public var formPays:TextField;
  24. public var formTelephone:TextField;
  25. public var formEmail:TextField;
  26. public var formMessage:TextField;
  27. private var defaultContent:Dictionary;
  28.  
  29. public function Contact()
  30. {
  31. super();
  32. }
  33. // Le problème est liée à cet override ci-dessous
  34.  
  35.  
  36. override protected function init():void
  37. {
  38. defaultContent = new Dictionary();
  39.  
  40. var t:TextField;
  41. var n:int = numChildren;
  42. while( n-- )
  43. {
  44. d = getChildAt(n);
  45. if ( d is TextField )
  46. {
  47. t = TextField( d );
  48. t.embedFonts = true;
  49. defaultContent[t] = t.text;
  50.  
  51. }
  52. }
  53. sendBtn.addEventListener( MouseEvent.CLICK, onSend );
  54. super.init();
  55. }
  56.  
  57. private function onSend( event:MouseEvent = null ):void
  58. {
  59. if ( 1 )
  60. {
  61. //envoyer les données
  62.  
  63. var vars:URLVariables = new URLVariables();
  64. vars.nom = formNom.text;
  65. vars.prenom = formPrenom.text;
  66. vars.adresse = formAdresse.text;
  67. vars.cp = formCodePostal.text;
  68. vars.ville = formVille.text;
  69. vars.pays = formPays.text;
  70. vars.telephone = formTelephone.text;
  71. vars.email = formEmail.text;
  72. vars.message = formMessage.text;
  73. var req:URLRequest = new URLRequest( 'http://odin.netau.net/envoimail.php');
  74. req.method = URLRequestMethod.POST;
  75. req.data = vars;
  76.  
  77. var sender:URLLoader = new URLLoader();
  78. sender.load( req );
  79.  
  80. //fermer le formulaire
  81. sendBtn.removeEventListener( MouseEvent.CLICK, onSend );
  82. formPrenom. text = 'Envoyer !' ;
  83. formNom.text = 'Envoyer !';
  84. formAdresse.text = 'Envoyer !';
  85. formVille.text = 'Envoyer !';
  86. formPays.text = 'Envoyer !';
  87. formCodePostal.text = 'Envoyer !';
  88. formEmail.text = 'Envoyer !';
  89. formTelephone.text = 'Envoyer !';
  90. formMessage.text = 'Merci pour votre message. Nous vous repondrons dans les plus brefs délais.';
  91. TweenMax.to( sendBtn, .6, { autoAlpha: 0} );
  92. }
  93. }
  94.  
  95. }
  96. }



ContentPage.as:
  1. package fr.odin.content
  2. {
  3. import flash.display.MovieClip;
  4. import com.greensock.TweenMax;
  5.  
  6. public class ContentPage extends MovieClip
  7. {
  8. private var _isInit:Boolean;
  9.  
  10. public function ContentPage()
  11. {
  12. _isInit = false;
  13. visible = false;
  14. alpha = 0;
  15. super();
  16. }
  17.  
  18. protected function init():void
  19. {
  20. _isInit = true;
  21. }
  22.  
  23. public function show():void
  24. {
  25. if ( !_isInit )
  26. {
  27. init();
  28. }
  29.  
  30. TweenMax.to( this, .45, { autoAlpha: 1} );
  31. }
  32. public function hide():void
  33. {
  34. TweenMax.to( this, .25, { autoAlpha: 0} );
  35. }
  36.  
  37. }
  38. }




Voila les erreurs qui apparraissent sous flash lors de la compilation et de la lecture sous flash:
Sortie:
TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at fr.odin.content::Contact/init()
at fr.odin.content::ContentPage/show()
at fr.odin::Site/onMenuChange()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at fr.odin.menu::Menu/selectItem()
at fr.odin.menu::Menu/onClick()


Normalement il n'y a aucun problème au niveau des pages Menu.as ou Site.as mais je vous ajoute les codes tout de même:
Menu.as:
  1. package fr.odin.menu
  2. {
  3. import SWFAddress;
  4.  
  5. import com.greensock.TweenMax;
  6. import com.greensock.easing.Quad;
  7.  
  8. import flash.display.DisplayObject;
  9. import flash.display.MovieClip;
  10. import flash.events.Event;
  11. import flash.events.MouseEvent;
  12. import flash.net.URLLoader;
  13. import flash.net.URLLoaderDataFormat;
  14. import flash.net.URLRequest;
  15.  
  16.  
  17. [Event(name="menuChange", type="fr.odin.menu.MenuEvent")]
  18.  
  19. public class Menu extends MovieClip
  20. {
  21. public var menuMask:MovieClip;
  22. public var menuTexture:MovieClip;
  23.  
  24. private var xmlLoader:URLLoader;
  25. private var xmlData:XML;
  26. //private var menuItems:Array;
  27. private var currentItem:MenuItem;
  28.  
  29. public function Menu()
  30. {
  31. init();
  32. }
  33.  
  34. private function init():void
  35. {
  36. menuTexture.mask= menuMask;
  37.  
  38. xmlLoader = new URLLoader();
  39. xmlLoader.addEventListener(Event.COMPLETE, onXMLLoadComplete);
  40. xmlLoader.load( new URLRequest( 'data/xml/menu.xml' ) );
  41.  
  42. }
  43.  
  44. private function onXMLLoadComplete( event:Event = null ):void
  45. {
  46. xmlData = new XML( xmlLoader.data );
  47. var items:XMLList = xmlData.item;
  48. var n:int = items.length();
  49. var mi:MenuItem;
  50. while ( n--)
  51. {
  52. mi = new MenuItem( items[n] );
  53. mi.y = n * MenuItem.ITEM_HEIGHT;
  54. addChild( mi );
  55. }
  56. addEventListener( MouseEvent.CLICK, onClick );
  57.  
  58. var path:String = SWFAddress.getPath();
  59. if ( path.length < 2 )
  60. {
  61. selectID( items[0].@uid );
  62. }
  63.  
  64. SWFAddress.addEventListener( SWFAddressEvent.CHANGE, onSWFAddressChange );
  65. }
  66. private function onClick( event:MouseEvent = null):void
  67. {
  68. if ( event.target is MenuItem && currentItem != event.target )
  69. {
  70.  
  71. selectItem( MenuItem( event.target ) );
  72. SWFAddress.setValue( currentItem.id );
  73.  
  74. }
  75. }
  76. private function onSWFAddressChange( event:SWFAddressEvent ):void
  77. {
  78. if ( event.pathNames.length )
  79. {
  80. var nid:String = event.pathNames[0];
  81.  
  82. if (!currentItem || currentItem.id != nid )
  83. {
  84. selectID( nid );
  85. }
  86. }
  87. }
  88.  
  89. private function selectID( nid:String ):void
  90. {
  91. var n:int = numChildren;
  92. while ( n-- )
  93. {
  94. d = getChildAt( n );
  95. if ( d is MenuItem && MenuItem(d).id == nid )
  96. {
  97. selectItem( MenuItem(d) );
  98. break;
  99. }
  100. }
  101. }
  102.  
  103. private function selectItem( ni:MenuItem ):void
  104. {
  105. if ( currentItem ) currentItem.selected = false;
  106.  
  107. currentItem = ni;
  108. currentItem.selected = true
  109. TweenMax.to( menuMask, .4, {y: currentItem.y - 5, ease: Quad.easeOut } );
  110.  
  111. dispatchEvent( new MenuEvent( currentItem.id ) );
  112. }
  113. }
  114. }




Site.as:
  1. package fr.odin
  2. {
  3. import com.greensock.TweenMax;
  4. import com.greensock.easing.Quad;
  5.  
  6. import flash.display.DisplayObject;
  7. import flash.display.Graphics;
  8. import flash.display.MovieClip;
  9. import flash.display.Shape;
  10. import flash.display.Sprite;
  11. import flash.events.Event;
  12. import flash.utils.Dictionary;
  13.  
  14. import fr.odin.content.Acceuil;
  15. import fr.odin.content.Atelier;
  16. import fr.odin.content.Cartons;
  17. import fr.odin.content.Catalogue;
  18. import fr.odin.content.Contact;
  19. import fr.odin.content.ContentPage;
  20. import fr.odin.content.Infos;
  21. import fr.odin.content.Photos;
  22. import fr.odin.content.Videos;
  23. import fr.odin.content.Webcam;
  24. import fr.odin.menu.Menu;
  25. import fr.odin.menu.MenuEvent;
  26.  
  27. public class Site extends MovieClip
  28. {
  29. public static var contentOffset:int;
  30.  
  31. public var fond2:MovieClip;
  32. public var carton:MovieClip;
  33. public var logo:MovieClip;
  34. public var creation:MovieClip;
  35. public var zig_d:MovieClip;
  36. public var zig_g:MovieClip;
  37. public var fond1:MovieClip;
  38. public var etablissment:MovieClip;
  39. public var menu:Menu;
  40. public var zig_bas:MovieClip
  41.  
  42. private var content:Sprite;
  43. private var contentBg:Shape;
  44. private var contentDictionnary:Dictionary;
  45. private var currentContent:ContentPage;
  46.  
  47. public function Site()
  48. {
  49. if ( stage ) init();
  50. else addEventListener( Event.ADDED_TO_STAGE, init );
  51.  
  52. }
  53.  
  54. private function init( event:Event = null ):void
  55. {
  56. removeEventListener( Event.ADDED_TO_STAGE, init );
  57.  
  58. var n:int = numChildren;
  59.  
  60. for( var i:int = 0; i < n; i++ )
  61. {
  62. d = getChildAt(i);
  63.  
  64. switch(d)
  65. {
  66. case menu:
  67. TweenMax.from( d, 1, { alpha:0, delay: 2, ease: Quad.easeOut } )
  68. break;
  69.  
  70. case fond1:
  71.  
  72. break;
  73.  
  74. case fond2:
  75.  
  76. break;
  77.  
  78. default:
  79. TweenMax.from( d, .6, { alpha:0, y: -d.height, delay: .3 * i, ease: Quad.easeOut } )
  80. break;
  81.  
  82. }
  83.  
  84.  
  85. }
  86.  
  87. contentOffset = 202;
  88.  
  89. //crée les rubriques
  90. content = new Sprite();
  91. content.x = contentOffset;
  92. content.y = 128;
  93. content.alpha = 0
  94. addChild( content );
  95.  
  96. contentBg = new Shape();
  97. var g:Graphics = contentBg.graphics;
  98. g.beginFill( 0xfcf7f0, 0.3 );
  99. g.drawRect ( 0, 0, 698, 355 );
  100. g.endFill();
  101. content.addChildAt( contentBg, 0 );
  102.  
  103. contentDictionnary = new Dictionary();
  104. contentDictionnary['acceuil'] = content.addChild( new Acceuil() );
  105. contentDictionnary['atelier'] = content.addChild( new Atelier() );
  106. contentDictionnary['catalogue'] = content.addChild( new Catalogue() );
  107. contentDictionnary['cartons'] = content.addChild( new Cartons() );
  108. contentDictionnary['infos'] = content.addChild( new Infos() );
  109. contentDictionnary['photos'] = content.addChild( new Photos() );
  110. contentDictionnary['videos'] = content.addChild( new Videos() );
  111. contentDictionnary['webcam'] = content.addChild( new Webcam() );
  112. contentDictionnary['contact'] = content.addChild( new Contact() );
  113.  
  114. //écouter le menu
  115. menu.addEventListener( MenuEvent.MENU_CHANGE, onMenuChange );
  116.  
  117. }
  118. private function onMenuChange( event:MenuEvent ):void
  119. {
  120. if ( content.alpha ==0 ) TweenMax.to( content, 5, { alpha: 1} ) && TweenMax.from ( content, 3, { x: 600 } );
  121.  
  122.  
  123. if ( currentContent ) currentContent.hide();
  124.  
  125. currentContent = ContentPage( contentDictionnary[event.itemID] );
  126. currentContent.show();
  127. }
  128. }
  129. }




Si vous avez besoin d'autre information dite moi je vous enverrai les fichiers complémentaires !

Merci d'avance.

Autres pages sur : probleme actionscript programation page contact

a c 232 L Programmation
26 Mai 2012 18:07:10

Salut,

Désolé pour le retard...
Le problème vient de ta boucle while (n--)
Il n'y a pas de condition d'arrêt avec une boucle comme ça
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS