这段代码中"as"关键字的重要性是什么

Vis*_*ani 1 apache-flex actionscript-3

package
{
    import flash.display.Sprite;
    import flash.media.Sound;
    import flash.media.SoundChannel;

    public class EmbeddedSoundExample extends Sprite
    {
        [Embed(source="smallSound.mp3")]
        public var soundClass:Class;

        public function EmbeddedSoundExample()
        {
          //WHAT DOES "as" keyword DO IN THE FOLLOWING LINE ??
          //*************************************************

            var smallSound:Sound = new soundClass() as Sound;

            //COULD BE WRITTEN AS : 
            //==>>>> var smallSound:Sound = new soundClass() ???
            // OR
            ////==>>>> var smallSound:Sound = new Sound() ???
         //******************************************************

            smallSound.play();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Stu*_*tLC 5

这是在ActionScript 3中引入的转换操作符.与转换as相反(与转换相反Type(object))的区别在于,如果转换失败,结果将是该类型的默认值.更多关于这里

  • 上面的答案是100%正确,但是要解释它更容易:soundClass是一个类,但是在代码中你将soundClass的值赋给一个类型为"Sound"的变量.因此,为了捕捉错误,你告诉flex他应该将soundClass视为声音而不是类. (3认同)