白桦的天空

第一次的心动,永远的心痛!
  首页  :: 新随笔  :: 联系 :: 管理
Flash 结合 MediaPlayer 的例子早几年就有了,可是却一直没得到很好的推广和普及。发这帖,就是希望让蓝色和我们大家一同来见证 Flash + WMP 的扩展和普及。Flash + WMP 可以实现播放 wma/wmv/mp3/asf/mid/wav 等等众多 WMP 所支持的格式,并且,WMP 本身支持播放 SWF,只是不支持对 SWF 进行控制。

以下是 Flash + WMP 的先驱,再次感谢 wersling 前辈。说前辈一点不为过,2004年发布的。
让 Flash 支持 Wma》出处:http://www.wersling.com/blog/article.asp?id=29

以下是我在制作过程中积累的相关知识和资料,因为内容较多,如有错误,还请大家一同指正。希望能够抛砖引玉,也希望能够得到广大同仁的支持。正如 火山兄 所说的:FLASH的普及和发展,全世界的每一位FLASHER都责无旁贷!

ActionScript 2.0 动作脚本字典

很实用的一本 as2.0 字典,chm 格式。
http://www.zhugao.cn/downloads/study_flash/FlashAction2.0Dic-Cn.rar

动态文本的遮罩方法

在 Flash 中,直接使用遮罩层的方法无法对动态文本进行遮罩,可采用setMask方法实现。
例:
targetMc.setMask(maskmc);
targetMc为被遮罩对象,maskmc为遮罩对象。

让 Flash 按钮实现双击

on(release){
time=new Date();
se=time.getSeconds();
mi=time.getMilliseconds();
t=Math.round(se*1000+mi);
b=a;
a=t;
c=a-b;
if(c<300&&c>0){
trace("双击成功")
a=b=c=0;//清零,以便下一次计算
}
}

Flash 按钮隐藏手形

btn_test.useHandCursor=false;
注:此语句需与 btn_test 按钮在同一帧上。

Flash 自定义全局右键代码
原文:http://www.zhugao.cn/info/news_study_show.asp?id=178

function tab(){
}
function url1(){
getURL("http://www.9sky.com", "_blank");
}
function url2(){
getURL("http://www.zhugao.cn", "_blank");
}
var expandmenu = new ContextMenu();
expandmenu.hideBuiltInItems();
var $tab1 = new ContextMenuItem("9skyNetPlayer version 1.0", url1, true, true, true);//更改背后三个"true"可以达到不同的效果, 下同。可设置的值为: true / false
var $tab2 = new ContextMenuItem("http://www.9sky.com", url1, false, false, true);
var $tab3 = new ContextMenuItem("creator: zhugao", url2, true, true, true);
var $tab4 = new ContextMenuItem("http://www.zhugao.cn", url2, false, false, true);
expandmenu.customItems.push($tab1, $tab2, $tab3, $tab4);
expandmenu.onSelect = menuHandler;
_root.menu = expandmenu;

Flash 的 List 组件每行列表文字前加图标
原文及源文件:http://www.zhugao.cn/info/news_study_show.asp?id=180

var labelname = ["Flash", "Dreamweaver", "Firework"];
var ico_mc:Array = new Array();
list.iconField = "icon";//设置对象数组中作为图标的标识符,非链接属性
for (var i = 0; i<3; i++){
ico_mc.addItem({label:labelname[i], icon:"ico" + i});
//如需统一图标,这里写成 icon:"ico0",相应更改库中影片的链接属性
}
list.dataProvider = ico_mc;

解决 Flash Remoting For .Net 跨域连接的问题
原文:http://www.zhugao.cn/info/news_study_show.asp?id=180

List 循环选择项目
原文及源文件:http://www.zhugao.cn/info/news_study_show.asp?id=191

listTest.addItem({data:"flash", label:"Flash"});
listTest.addItem({data:"dreamweaver", label:"Dreamweaver"});
listTest.addItem({data:"coldfusion", label:"ColdFusion"});

next_btn.onRelease = function()
{
selIndex = listTest.selectedIndex;
listTest.selectedIndex = ((selIndex == listTest.length-1) || (selIndex==undefined) ?0 : selIndex + 1);
//每次加一,如果项目为倒数第一项或undefined,则从第一项开始,Flash的算法中,0 是第一项,length-1 则为最后一项
}

prev_btn.onRelease = function()
{
selIndex = listTest.selectedIndex;
listTest.selectedIndex = ((selIndex == 0) || (selIndex==undefined) ?listTest.length-1 : selIndex - 1);
//每次减一,如果项目为第一项或undefined,则从倒数最后一项开始,Flash的算法中,0 是第一项,length-1 则为最后一项
}

Flash 自定义局部右键菜单,为不同区域设定不同右键菜单
原文及源文件:http://www.zhugao.cn/info/news_study_show.asp?id=194

在舞台中建一个名为“test_mc”的 MC ,复制以下代码到相应帧。注意:“test_mc”必须放在顶层,否则无效。如果不想看到“test_mc”,可将其 Alpha 值设成“0”。

var menu_mc:ContextMenu = new ContextMenu();
menu_mc.hideBuiltInItems();
menu_mc.customItems.push(new ContextMenuItem("menu1...", menu_01));
menu_mc.customItems.push(new ContextMenuItem("menu2...", menu_02));
menu_mc.customItems.push(new ContextMenuItem("menu3...", menu_03));

//定义各菜单点击后的响应动作
function menu_01(menu:Object, obj:Object):Void {
trace("你选择了menu1...");
}
function menu_02(menu:Object, obj:Object):Void {
trace("你选择了menu2...");
}
function menu_03(menu:Object, obj:Object):Void {
trace("你选择了menu3...");
}

test_mc.menu = menu_mc;

Flash 钢笔工具转换节点的方法

Flash 钢笔工具没有 PS 的好用,这是公认的,尤其在转换节点的时候更是有一个小技巧,需要细心才能体会。方法如下:
在需要转换节点的地方,第一次按住 Ctrl 点击一次,然后松开 Ctrl 在原点再点击一次,之后在节点外点击即可完成节点转换。

Flash 使用右键传递 List 中的所有项目
源文件:http://www.zhugao.cn/downloads/study_flash/listSelectAll.rar

场景中有两个 List 组件 ListA 、ListB,本例实现:在 ListA 中点击右键,选择“选择所有项目”,不重复的传递所有项目到 ListB 中。

解决 Flash 本地测试中出现安全警告的方法
原文:http://www.zhugao.cn/info/news_study_show.asp?id=203

影片滚动条一款
源文件:http://www.zhugao.cn/downloads/study_flash/scroll_002.rar

控制 Flash Player 的 JavaScript 方法一览表
原文:http://www.zhugao.cn/info/news_study_show.asp?id=214

限制 Flash 在指定域名/网址中播放
详细注释及原文:http://www.zhugao.cn/info/news_study_show.asp?id=217

url = "http://www.zhugao.cn";
if(_url.substring(0, 20)<>url){
gotoAndStop(2);
}else{
gotoAndPlay(3);
}

如果要允许多个域名,可以这样写:
url = "http://www.zhugao.cn";
url2 = "http://zhugao.cn";
if((_url.substring(0, 20)==url) || (_url.substring(0, 16)==url2)){
gotoAndPlay(3);
}else{
gotoAndStop(2);
}

Flash 中通过点击按钮刷新网页的方法
on(release){
getURL("javascript:location.reload()");
}

让 List 滚动条跟随当前项目
源文件:http://www.zhugao.cn/downloads/study_flash/scrollFollow.rar

MC 加载外部影片时需要注意的问题
原文:http://www.zhugao.cn/info/news_study_show.asp?id=246

在主场景中新建一个空的 MC,把外部影片导入到这个 MC 里,例如这个 MC 名字为 testMC,载入的代码为:testMC.loadMovie("外部影片");

原则上,此时,这个外部 SWF 里的代码要根据主场景来修改,就是说这个外部 SWF 相当于已经是主场景中的一个元件“testMC”,如果这个外部 SWF 中有 _root ,那么:

原来的代码:_root.....
要改成类似:_root.testMC.....
还有一种方法就是改成相对路径,用 _parent 来实现。

但是这些都较为烦琐,事实上,我们只需在“testMC”的第一帧写上“this._lockroot=true;”就行了。也可以写在“testMC” 的外部,写法类似这样:“testMC._lockroot=true;”它将确保外部影片在被加载之后,其 _root 仍然指向其本身,而不会受加载后主影片的影响。

关于“MovieClip._lockroot”的详细说明请查看 Flash 帮助。

Fscommand 与 JS 结合应用的例子
源文件:http://www.zhugao.cn/downloads/study_flash/Fscommand_js_test.rar

12 款网络播放器 (含 JS 源码,里面的 JS 应用供参考) - 2006-8-22 新增
文件下载:http://www.zhugao.cn/downloads/others/webPlayer.rar

JavaScript 的容错码,放在 <head> 标签内  - 2006-8-30 新增

在调试网站程序的时候,常常会弹出一些警告窗口,或是在浏览器的状态栏提示网页有错误,这些小失误将导致所有的程序都无法正常运行。下面这段 JavaScript 的容错码可以避免 JS 错误,让程序自动跳过错误继续正常运行。

<SCRIPT LANGUAGE="JavaScript">
<!-- Hide
function clearErrors() {
return true;
}
window.onerror = clearErrors;
// -->
</SCRIPT>

播放进度条及音量控制源文件  - 2006-8-30 新增
http://bbs.blueidea.com/thread-2671937-1-1.html

wmpID.controls.currentPosition' 为空或不是对象 - 解决方法  - 2006-9-1 新增
http://bbs.blueidea.com/thread-2671977-1-2.html

附作品:
http://bbs.blueidea.com/thread-2663376-1-1.html