Posts Tagged ‘flash’

FLV视频播放器用Flash cs3简单实现

星期五, 五月 25th, 2007

前段时间需要做一个FLV播放器,考察了一些网站,也发狠用ASV的去看别人的代码。结果都是经过混淆。看别人的代码不容易啊!像youtube,土豆网,之类的做得都不错,本是拿来主义是最快的方式,结果。。。。
经过了解,发现大致有两种方式可以现,一种用FLVPlayback组件,然后自己开发;另一种是利用FLVPlayback皮肤的方式。显然后者的实现起来要简单的多,但只有基功能,不过够用了。

演示地址:http://www.badacity.com/video

有两个件,一个是播放器文件,主场景里只需一个FLVPlayback组件,在时间轴上一个获取FLV文件URL地址
的代码。另一个则是制作的皮肤文件。

下面的源文的下载地址。

点击下载

写了一个FLASH农历日期类.

星期六, 五月 19th, 2007

对农历算法研究几天,发现算法其实不是难事,关键是有一个农历每年大小月以及闰月的数据.
贴上代码,有兴趣的朋友可以看看.
我这里是只直继承DATE类.(转载请注明出处)
(全文…)

FLash子类继承父类的带参数的构造函数

星期一, 五月 14th, 2007

想给FLASH的Date类增加一些农历的数据.当然是继承Date再增加一些方法啦.
但在做的过程发现在以前从没有碰到过的问题.
农历的数据是从公历数据换算过来的.而Date类在实例过程中有好几中方式.
怎么样继承父类的构造函数,在flash帮助文档中"重写方法和属性"中得到结果结论:
Widget.as类文件

class Widget {
    public static var widgetCount:Number = 0;
    public function Widget() {
        Widget.widgetCount++;
    }
    public function doSomething():Void {
        trace("Widget::doSomething()");
    }
}


SubWidget.as类文件

class SubWidget extends Widget {
    public function SubWidget() {
        trace("Creating subwidget # " + Widget.widgetCount);
        doSomething();
    }
}


在新建的flash文档中


var sw1:SubWidget = new SubWidget();
var sw2:SubWidget = new SubWidget();



输出结果:


Creating subwidget # 1
Widget::doSomething()
Creating subwidget # 2
Widget::doSomething()



结论是子类继承父类,也继承了父类的构造函数.但是Date类构建函数是带参数,而且还是有多种方式.
最后,终于在flash帮助文档中找到了super条目.以前一直没有注意.以前做的东西也很少有这样父类,子类,爷类的.
super用法:


super.method([arg1, ..., argN])
super([arg1, ..., argN])



第一种语法格式可以在对象方法体内使用,用于调用方法的超类版本,而且可以选择向超类方法传递参数 (arg1 … argN)。这对于创建某些子类方法很有用,这些子类方法在向超类方法添加附加行为的同时,又调用这些超类方法执行其原始行为。

第二种语法格式可以用于构造函数体内,用以调用此构造函数的超类版本,而且可以选择向它传递参数。这对于创建子类很有用,该子类在执行附加的初始化的同时,又调用超类构造函数执行超类初始化。

我的农历date类 LunarCalendar.as,其实的参数完全和date类的参数一样.


class LunarCalendar extends Date {
 public function LunarCalendar(yearOrTimevalue:Number, month:Number, date:Number, hour:Number, minute:Number, second:Number, millisecond:Number) {
  super(yearOrTimevalue, month, date, hour, minute, second, millisecond);
 }
}

FLASH动态文本消除锯齿方法

星期五, 四月 27th, 2007

方法一:嵌入字符集

选中文本后,属性面板里。选择“动画消除锯齿”,会弹出对话框。
选择嵌入字符集。
还可以自己定字符集,需要修改UnicodeTable.xml 文件,位于C:Program FilesMacromediaFlash 8<language>First RunFontEmbedding 

<glyphRange name="Uppercase [A..Z] " id="1" >
    <range min="0×0041" max ="0×005A" />
</glyphRange>


比较简单,定议多个<r[---]ange>就可以了。
这种方法最大的好处不会对swf文件大小产生太大影响(英文字符),适全小规模应用。
嵌入大小字,标点符号,数字一共114字,文件增加10K-20K之间。

方法二,用TextFormat

先在库里新建字体,创建链接标识符 (比如把04b08嵌入字体到库里,链接标识符为04b08)

var text_fmt:TextFormat = new TextFormat();
text_fmt.font = "04b08";
text_fmt.size = 10;
this.createTextField("my_txt", 10, 20, 20, 320, 240);
my_txt.autoSize = "left";
my_txt.embedFonts = true;
my_txt.selectable = false;
my_txt.setNewTextFormat(text_fmt);



这种方法,用法方面,可以在as中随便设置,但最不好的一点会使文件大不小,起码是4M以上。

而且字体是第一帧导出,会使文件加载进度控制变得很麻烦。

不管用那种方法,最好是先嵌入字体。第一种方法虽然不需要嵌入字体,但如果要到另一台电脑上修改的话,就会丢失字体。
嵌入的字体会在字体名称后面加个"*"

Flash真正全屏

星期五, 四月 20th, 2007

1,全屏下 Flash 文本框无法输入.
2,AS2 中一句话来调用全屏:
Stage["displayState"] = "fullScreen";
但必须使用事件处理器来调用才生效.就是:onPress,onClick…之类的.
3,最后就是HTML中必须加入 <param name="allowFullScreen" value="true" />属性,<embed>里面加上allowFullScreen="true"