2011-03-20 115 views
2

我正在通過「Foundation Actionscript 3.0」一書中的音頻播放器演示。當我嘗試發佈我的AudioDemo_final.FLA文件時,出現以下錯誤:「Adobe Flash CS3 - 創建Flash影片文件時出錯,目標目錄不存在,請更改您的發佈設置。Adob​​e Flash創建Flash電影文件時出錯目標目錄不存在

顯示在我的輸出面板>>錯誤打開網址下面的「文件:/// C | /Sites/flashcoder.net/FAS3/Audio/AudioDemo%5Ffinal.swf」

我的文件目錄設立這樣的: AudioDemo_final.fla song1.mp3 com.fas3.smc(文件夾) Main.as Sounds.as

//com.fas3.smc/Main.as 
    package com.fas3.smc { 
      import flash.display.MovieClip; 
      import com.fas3.smc.Sounds; 
      import com.fas3.smc.ButtonManager; 
      import flash.text.TextField; 
      import flash.display.SimpleButton; 

      public class Main extends MovieClip { 
        private var soundManager:Sounds; 
        private var buts:ButtonManager; 

        public function Main() { 
          soundManager=new Sounds(movScrubber, txtStatus, txtHeadPosition, txtTrackLength, txtArtist, txtTitle, volumeSlider, panSlider); 
          soundManager.loadSong( song1.mp3 ); 
          addChild(soundManager); 
        } 
      } 
    } 

    //com.fas3.smc/Sounds.as 
    package com.fas3.smc { 
      import flash.media.Sound; 
      import flash.media.SoundChannel; 
      import flash.media.SoundLoaderContext; 
      import flash.media.SoundTransform; 
      import flash.media.ID3Info; 
      import flash.events.Event; 
      import flash.display.MovieClip; 
      import flash.net.URLRequest; 
      import flash.text.TextField; 
      import flash.utils.Timer; 
      import flash.events.TimerEvent; 
      import fl.controls.Slider; 
      import fl.events.SliderEvent; 

      public class Sounds extends MovieClip { 
        private var snd1:Sound; 
        private var sc:SoundChannel; 
        private var buffer:SoundLoaderContext; 
        private var timerLoading:Timer; 
        private var timerPlayHead:Timer; 
        private var timerFF:Timer; 
        private var timerRW:Timer; 
        private var timerSpectrum:Timer; 
        private var barWid:int = 200; 
        private var barHi:int = 5; 
        private var bytLoaded:int; 
        private var bytTotal:int; 
        private var pctLoaded:int; 
        private var trueChronoLength:Number; 
        private var txtStatus:TextField; 
        private var txtTrackLength:TextField; 
        private var txtHeadPosition:TextField; 
        private var txtArtist:TextField; 
        private var txtTitle:TextField; 
        private var movScreen:MovieClip; 
        private var movScrubber:MovieClip; 
        private var multiplier:Number; 
        private var nsMinutes:Number; 
        private var nsSeconds:Number; 
        private var pauseStatus:Boolean; 
        private var playHeadPosition:Number; 
        private var volumeSlider:Slider; 
        private var panSlider:Slider; 
        private var stVolume:SoundTransform; 
        private var tempVol:Number=0.5; 
        private var tempPan:Number=0; 
        private var trackEnd:Boolean; 
        private var trackStart:Boolean; 

        public function Sounds(movScrubber:MovieClip, txtStatus:TextField, txtHeadPosition:TextField, txtTrackLength:TextField, txtArtist:TextField, txtTitle:TextField, volumeSlider:Slider, panSlider:Slider) { 
          //Set movies and text fields to local references and to start positions and contents 
          this.movScreen=movScreen; 
          this.movScrubber=movScrubber; 
          this.txtStatus=txtStatus; 
          this.txtHeadPosition=txtHeadPosition; 
          this.txtTrackLength=txtTrackLength; 
          this.txtArtist=txtArtist; 
          this.txtTitle=txtTitle; 
          this.volumeSlider=volumeSlider; 
          this.panSlider=panSlider; 
          timerLoading=new Timer(100, 0); 
          timerLoading.addEventListener(TimerEvent.TIMER, onLoading); 
          timerLoading.start(); 

        } 

        public function loadSong(song:String):void { 
          snd1=new Sound(new URLRequest(song)) 
          snd1.addEventListener(Event.ID3, id3Handler) 
        } 

        public function onLoading(event.TimerEvent):void { 
          bytLoaded = snd1.bytesLoaded; 
          bytTotal = snd1.bytesTotal; 
          if((bytTotal >= bytLoaded)&&(bytLoaded > 0)) { 
            if(txtStatus.text!= Playing ) { 
              txtStatus.text= Loading ; 
            } 
            movScrubber.movLoaderBar.width=((bytLoaded/bytTotal) * 400); 
            if(bytLoaded == bytTotal) { 
              if(txtStatus.text= Loading ) { 
                txtStatus.text= Load Complete ; 
              } 
              timerLoading.stop() 
            } 
          } 
        } 
      } 
     } 
+1

好多了。祝你好運。 – 2011-03-20 14:05:11

+0

@Dante Jiang非常感謝你,我很高興聽到這個,再次感謝:) – 2011-03-20 14:09:42

回答

3

這意味着,你發佈你的SWF文件的目錄不可寫或不存在。檢查文件夾路徑確實存在並且可以寫入。很多時候,如果我將項目移動到不同的位置,但將發佈路徑硬編碼到我的FLA中,它會引發此錯誤。它在文件 - >發佈設置 - >格式。

+0

檢查同樣的問題:( – 2011-03-20 15:46:07

+0

你有什麼路徑?看起來這似乎不是一個有效的文件路徑乍一看 - 什麼是在那裏?:'file:/// C | /Sites/flashcoder.net/FAS3/Audio/AudioDemo%5Ffinal.swf' – jpea 2011-03-20 20:41:46

1

您使用的是外置硬盤嗎?我曾經有過同樣的問題。將FLA文件複製到桌面或本地文件夾,應該解決它。祝你好運。

1

檢查保存該文件的文件夾,如果該文件夾具有隻讀權限,則會出現此錯誤,並且如果刪除只讀權限,則所有內容都將按預期工作。 我試過了,它工作得很好。

1

我知道這篇文章有點晚了,但我有同樣的問題。彈出問題是因爲我實際上點擊了瀏覽按鈕並選擇了發佈文件夾。

而不是瀏覽,只需點擊「默認」。這些文件將被髮布到與.fla文件相同的目錄中。沒有更奇怪的錯誤消息。