AS3 错误 1195:
Posted
技术标签:
【中文标题】AS3 错误 1195:【英文标题】:AS3 Error 1195: 【发布时间】:2014-12-22 07:06:31 【问题描述】:我收到以下错误:
C:\Users\Admin\Desktop\Final Project\Main.as,第 80 行,第 14 列 1195: 尝试通过 a 访问不可访问的方法 setTrackData 使用静态类型 LoadSND 引用。
相关代码
package
import flash.display.MovieClip;
import flash.text.TextField;
import flash.display.SimpleButton;
import flash.utils.Dictionary;
import flash.text.TextFormat;
import flash.net.*;
import flash.events.*;
import fl.controls.*;
import flash.media.*;
import fl.events.ComponentEvent;
import fl.managers.StyleManager;
import fl.data.DataProvider;
import fl.data.SimpleCollectionItem;
import fl.managers.StyleManager;
import fl.events.ComponentEvent;
import flash.events.Event;
import flash.net.SharedObject;
import LoadSWF;
import GameButton;
import LoadSND;
public class Main extends MovieClip
//Declare variables
private var componentFmt: TextFormat;
private var radioBtnFmt: TextFormat;
private var playerData: Object;
private var savedGameData: SharedObject;
// Pop-up Variables
private var popupFile: LoadSWF;
private var swfPath: String;
private var swfFile: LoadSWF;
//Sound Variables
private var MAX_TRAX: int = 7;
private var MAX_SFX: int = 9;
private var sndPath: String;
private var sndTrack: LoadSND;
private var isMuted: Boolean;
private var canRepeat: Boolean;
private var sndVolume: Number;
private var sndChannel: SoundChannel;
public function Main()
// constructor code
this.savedGameData = SharedObject.getLocal("savedPlayerData");
this.setComponents();
this.setPlayerData();
swfPath = "";
sndPath = "musicSFX/Fury.mp3"; //default track
isMuted = false;
sndTrack = new LoadSND(sndPath, canRepeat);
/********************************************************
Load SND Functions***************************************
********************************************************/
private function setSound(evt: Event): void
// Process COMBO BOX changes
if (musicCombo.selectedItem.data == "none")
// no music is required so stop sound playing
SoundMixer.stopAll();
else
// otherwise load in the selected music
sndPath = "musicSFX/" + musicCombo.selectedItem.data;
sndTrack.setTrackData(sndPath, canRepeat);
private function setSlider(evt: Event): void
// identify the button clicked
var mySlider: Object = (evt.target);
// adjusting to volume of the music channel to slider value
sndTrack.setVolumeLevel(mySlider.value);
private function setVolumeLevel(myVolume: Number): void
// change the volume when slider changed
sndVolume = myVolume;
sndChannel.soundTransform = new SoundTransform(sndVolume, 0);
还有:LoadSND
类
package
import flash.events.*;
import flash.media.*;
import flash.net.URLRequest;
import flash.display.MovieClip;
public class LoadSND extends MovieClip
//declare variables
private var sndTrack: Sound;
private var sndChannel: SoundChannel;
private var sndVolume: Number;
private var newTrack: String;
private var canRepeat: Boolean;
public function LoadSND(myTrack: String, myRepeat: Boolean = true)
// constructor code
// set a default volume and track
sndVolume = 0.5;
setTrackData(myTrack, myRepeat);
private function loadSound(): void
// first stop all old sounds playing
SoundMixer.stopAll();
// create a new sound for the track and a new sound channel
sndTrack = new Sound();
sndChannel = new SoundChannel();
// load the required sound
sndTrack.load(new URLRequest(newTrack));
// when loaded – play it;
sndTrack.addEventListener(Event.COMPLETE, soundLoaded);
private function soundLoaded(evt: Event): void
// finished with this listener so remove it
//sndTrack.removeEventListener(Event.COMPLETE, soundLoaded);
// call the play sound function
playSound();
private function playSound(): void
// assign music to the musicChannel and play it
sndChannel = sndTrack.play();
// setting the volume control property to the sound channel
sndChannel.soundTransform = new SoundTransform(sndVolume, 0);
// but add this one to make repeats
sndChannel.addEventListener(Event.SOUND_COMPLETE, playAgain);
private function playAgain(evt: Event): void
// remove this listener and repeat playSound()
sndChannel.removeEventListener(Event.SOUND_COMPLETE, playAgain);
playSound();
private function setTrackData(myTrack: String, myRepeat: Boolean): void
// update the new track information
newTrack = myTrack;
canRepeat = myRepeat;
// and load it
loadSound();
private function setVolumeLevel(myVolume: Number): void
// change the volume when slider changed
sndVolume = myVolume;
sndChannel.soundTransform = new SoundTransform(sndVolume, 0);
//end class
//end package
感谢所有帮助 :) 谢谢
【问题讨论】:
【参考方案1】:LoadSND 类中的 setTrackData 函数是私有的。您需要将函数的类型更改为公共,以便您可以从主类访问此函数。
所以像这样改变你的功能
public function setTrackData(myTrack: String, myRepeat: Boolean): void
// update the new track information
newTrack = myTrack;
canRepeat = myRepeat;
// and load it
loadSound();
【讨论】:
以上是关于AS3 错误 1195:的主要内容,如果未能解决你的问题,请参考以下文章