Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 简单AS3代码类的帮助_Flash_Actionscript 3 - Fatal编程技术网

Flash 简单AS3代码类的帮助

Flash 简单AS3代码类的帮助,flash,actionscript-3,Flash,Actionscript 3,这是我的班级档案: package com { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.filesystem.File; import flash.filesystem.FileStream; import flash.filesystem.FileMode; import flash.events.Event; import fl.accessibility.Ch

这是我的班级档案:

package com

{

 import flash.display.MovieClip;
 import flash.events.MouseEvent;
 import flash.filesystem.File;
 import flash.filesystem.FileStream;
 import flash.filesystem.FileMode;
 import flash.events.Event;
 import fl.accessibility.CheckBoxAccImpl;
 import flash.display.MovieClip;
 import fl.controls.CheckBox;


 public class main extends MovieClip
 {
  public function main()
  {
   stop();
   trace("b4 fate")
   stage.addEventListener(Event.ENTER_FRAME, preview)
  }
  public function preview(e:Event):void
  {
   if (currentFrame == 1)
   {
    stage.addEventListener(Event.ENTER_FRAME, actions1);
   }
   else
   {
    stage.addEventListener(Event.ADDED_TO_STAGE, actionsother);
   }
  }
  public function actions1(e:Event):void
  {
   trace("b4 event listeners")
   l1.addEventListener(MouseEvent.CLICK, goto2);
   l2.addEventListener(MouseEvent.CLICK, goto3);
   l3.addEventListener(MouseEvent.CLICK, goto4);
   l4.addEventListener(MouseEvent.CLICK, goto5);
   l5.addEventListener(MouseEvent.CLICK, goto6);
   l6.addEventListener(MouseEvent.CLICK, goto7);
   l7.addEventListener(MouseEvent.CLICK, goto8);
   l8.addEventListener(MouseEvent.CLICK, goto9);
   l9.addEventListener(MouseEvent.CLICK, goto10);
   l10.addEventListener(MouseEvent.CLICK, goto11);
   l11.addEventListener(MouseEvent.CLICK, goto12);
   l12.addEventListener(MouseEvent.CLICK, goto13);
   l13.addEventListener(MouseEvent.CLICK, goto14);
   l14.addEventListener(MouseEvent.CLICK, goto15);
   l15.addEventListener(MouseEvent.CLICK, goto16);
   l16.addEventListener(MouseEvent.CLICK, goto17);
   l17.addEventListener(MouseEvent.CLICK, goto18);
   l18.addEventListener(MouseEvent.CLICK, goto19);
   c1.addEventListener(MouseEvent.CLICK, goto2);
   c2.addEventListener(MouseEvent.CLICK, goto3);
   c3.addEventListener(MouseEvent.CLICK, goto4);
   c4.addEventListener(MouseEvent.CLICK, goto5);
   c5.addEventListener(MouseEvent.CLICK, goto6);
   c6.addEventListener(MouseEvent.CLICK, goto7);
   c7.addEventListener(MouseEvent.CLICK, goto8);
   c8.addEventListener(MouseEvent.CLICK, goto9);
   c9.addEventListener(MouseEvent.CLICK, goto10);
   c10.addEventListener(MouseEvent.CLICK, goto11);
   c11.addEventListener(MouseEvent.CLICK, goto12);
   c12.addEventListener(MouseEvent.CLICK, goto13);
   c13.addEventListener(MouseEvent.CLICK, goto14);
   c14.addEventListener(MouseEvent.CLICK, goto15);
   c15.addEventListener(MouseEvent.CLICK, goto16);
   c16.addEventListener(MouseEvent.CLICK, goto17);
   c17.addEventListener(MouseEvent.CLICK, goto18);
   c18.addEventListener(MouseEvent.CLICK, goto19);

   trace("after rl")

   function goto2(e:MouseEvent):void
   {
    trace("after rl2")
    gotoAndStop(2);
   }

   function goto3(e:MouseEvent):void
   {
    gotoAndStop(3);
   }
   function goto4(e:MouseEvent):void
   {
    gotoAndStop(4);
   }
   function goto5(e:MouseEvent):void
   {
    gotoAndStop(5);
   }
   function goto6(e:MouseEvent):void
   {
    gotoAndStop(6);
   }
   function goto7(e:MouseEvent):void
   {
    gotoAndStop(7);
   }
   function goto8(e:MouseEvent):void
   {
    gotoAndStop(8);
   }
   function goto9(e:MouseEvent):void
   {
    gotoAndStop(9);
   }
   function goto10(e:MouseEvent):void
   {
    gotoAndStop(10);
   }
   function goto11(e:MouseEvent):void
   {
    gotoAndStop(11);
   }
   function goto12(e:MouseEvent):void
   {
    gotoAndStop(12);
   }
   function goto13(e:MouseEvent):void
   {
    gotoAndStop(13);
   }
   function goto14(e:MouseEvent):void
   {
    gotoAndStop(14);
   }
   function goto15(e:MouseEvent):void
   {
    gotoAndStop(15);
   }
   function goto16(e:MouseEvent):void
   {
    gotoAndStop(16);
   }
   function goto17(e:MouseEvent):void
   {
    gotoAndStop(17);
   }
   function goto18(e:MouseEvent):void
   {
    gotoAndStop(18);
   }
   function goto19(e:MouseEvent):void
   {
    gotoAndStop(19);
   }



   /*
   var myfile:File = File.applicationStorageDirectory.resolvePath("mytext.txt");
   var filestream:FileStream = new FileStream();
   filestream.open(myfile, FileMode.WRITE);
   filestream.writeUTFBytes("hello data");
   filestream.close();

   var myfile2:File = File.applicationStorageDirectory.resolvePath("mytext.txt");
   var filestream2:FileStream = new FileStream();
   filestream2.open(myfile2, FileMode.READ);
   textbx.text = filestream2.readUTFBytes(filestream2.bytesAvailable);
   filestream2.close();
   */

   /*var loadname;
   var loadnamevalue;

   var testnow;
   for (var lo:int = 1; lo <= 18; lo++)
   {
   loadname = "cb"+lo;
   var testiffile:File = File.applicationStorageDirectory.resolvePath("cb1.txt");
   if (!testiffile.exists)
   {
   break;
   }

   var myfile2:File = File.applicationStorageDirectory.resolvePath(loadname+".txt");
   var filestream2:FileStream = new FileStream();
   filestream2.open(myfile2, FileMode.READ);
   loadnamevalue = filestream2.readUTFBytes(filestream2.bytesAvailable);
   filestream2.close();

   if (loadnamevalue == "true")
   {
   this["cb"+lo].selected = true;
   }
   else
   {
   this["cb"+lo].selected = false;
   }
   }

   var current;
   for (var inc = 1; inc <= 18; inc++)
   {
   current = "cb"+inc;
   this["cb"+inc].addEventListener(Event.CHANGE, storedata);
   }

   var storage:Array;
   var writevalue;
   var nowname;
   function storedata(e:Event):void
   {
   for (var ninc:int = 1; ninc <=18; ninc++)
   {
   nowname = "cb"+ninc;
   if (this["cb"+ninc].selected == true)
   {
   writevalue = "true";
   }
   else 
   {
   writevalue = "false";
   }

   var myfile:File = File.applicationStorageDirectory.resolvePath(nowname+".txt");
   var filestream:FileStream = new FileStream();
   filestream.open(myfile, FileMode.WRITE);
   filestream.writeUTFBytes(writevalue);
   filestream.close();
   }

   }*/



   var loadname;
   var loadnamevalue;
   var varname;
   var testnow;
   for (var lo:int = 1; lo <= 18; lo++)
   {
    loadname = "cb" + lo;
    var testiffile:File = File.applicationStorageDirectory.resolvePath(loadname + ".txt");
    if (testiffile.exists)
    {
     var myfile2:File = File.applicationStorageDirectory.resolvePath(loadname + ".txt");
     var filestream2:FileStream = new FileStream();
     filestream2.open(myfile2, FileMode.READ);
     loadnamevalue = filestream2.readUTFBytes(filestream2.bytesAvailable);
     filestream2.close();

     if (loadnamevalue == "true")
     {
      this["l" + lo].visible = false;
     }
     else
     {
      this["l" + lo].visible = true;
     }

    }


   }

  }
  public function actionsother(e:Event):void
  {
   trace("gotthere")
   backbtn.addEventListener(MouseEvent.CLICK, goback);
   function goback(e:MouseEvent):void
   {
    gotoAndStop(1);
   }

   var checkbox:CheckBox = new CheckBox()
   addChild(checkbox)
   checkbox.x=100;
   checkbox.y=100;
   //trace("start");
   var loadname;
   var loadnamevalue;

   var testnow;
   trace("1")
   loadname = "cb"+(currentFrame-1);
   var testiffile2:File = File.applicationStorageDirectory.resolvePath(loadname + ".txt");
   if (testiffile2.exists)
   {
    var myfile2:File = File.applicationStorageDirectory.resolvePath(loadname + ".txt");
    var filestream2:FileStream = new FileStream();
    filestream2.open(myfile2, FileMode.READ);
    loadnamevalue = filestream2.readUTFBytes(filestream2.bytesAvailable);
    filestream2.close();

    if (loadnamevalue == "true")
    {
     checkbox.selected = true;
    }
    else
    {
     checkbox.selected = false;
    }

   }
   else
   {
    //trace("doesnt exist");
   }

   checkbox.addEventListener(Event.CHANGE, storedata);
   var storage:Array;
   var writevalue;
   var nowname;
   function storedata(e:Event):void
   {
    nowname = loadname;
    trace(nowname);
    if (checkbox.selected == true)
    {
     writevalue = "true";
    }
    else
    {
     writevalue = "false";
    }

    var myfile:File = File.applicationStorageDirectory.resolvePath(loadname + ".txt");
    var filestream:FileStream = new FileStream();
    filestream.open(myfile, FileMode.WRITE);
    filestream.writeUTFBytes(writevalue);
    filestream.close();
   }
  }
 }
}
我在单击按钮时一直遇到此错误:错误1009:无法访问空对象引用的属性或方法


为什么我会犯这个错误?如何修复它?

使用Event.ADDED\u TO\u STAGE而不是Event.ENTER\u FRAME。因为要使用Event.ENTER_FRAME Event,必须将对象添加到stage。

我将首先在调试器中运行代码。你知道它在哪一条线上失败了吗?这将帮助您找出什么是空值,然后从那里返回。

我注意到了一些事情

无论您是否调用stop,preview的侦听器都将在每一帧被调用。这意味着您正在调用的每个帧stage.addEventListenerEvent.ENTER_frame,actions1;这只会在第一次添加侦听器,但作为最佳实践,仍应避免

对于您遇到的错误,首先要尝试调用tracel1;在构造函数中。如果在运行它时输出类似于[Object Movieclip]的内容,那么就很好了。相反,如果它没有跟踪任何内容并给出错误,则需要确保已向stage添加了一个按钮,并为其提供了实例名l1。如果它确实跟踪了我们的预期,那么您的代码应该看起来更像这样:

public class main extends MovieClip { public function main() { stop(); l1.addEventListener(MouseEvent.CLICK, goto2); } public function preview(e:Event):void { gotoAndStop(2); } }
希望这有帮助

打开调试器:文件>发布设置>Flash>允许调试

我应该替换哪个实例?哪一行导致了错误?@samuel它并没有确切地告诉我……这很奇怪,通常你会得到一个带有行号的堆栈跟踪。尝试删除代码,直到找到问题的原因。或者添加大量跟踪语句,或者使用调试器。您的示例中的代码太多,其他人无法找到导致问题的代码行。请尝试重构该代码。看着它真的很痛苦。重复的侦听器不会被添加两次;但无论如何,我不会在每一帧上都添加它们。谢谢你指出这一点!我会更新这个,以防将来有人偶然发现它。