曾经一段时间做flash的程序开发,所以收录很多关于AS的文章
多年未接触Flash,今天有一个广告要修改,查资料才知道按钮怎么做链接
不查资料都不知道怎么操作,和2.0的做法不同,在工作界面就懵了。。
当然,按钮要命名为btn哦
不查资料都不知道怎么操作,和2.0的做法不同,在工作界面就懵了。。
var url:String = "你的URL地址";
//btn是你的按钮
btn.addEventListener(MouseEvent.CLICK,__onBtnHandler);
private function __onBtnHandler(e:MouseEvent):void
{
navigateToURL(new URLRequest(url), "_blank");
}
补充:
使用完了移除该事件
btn.removeEventListener(MouseEvent.CLICK,__onBtnHandler);
//btn是你的按钮
btn.addEventListener(MouseEvent.CLICK,__onBtnHandler);
private function __onBtnHandler(e:MouseEvent):void
{
navigateToURL(new URLRequest(url), "_blank");
}
补充:
使用完了移除该事件
btn.removeEventListener(MouseEvent.CLICK,__onBtnHandler);
当然,按钮要命名为btn哦
现在很多视频网站都有全屏观看,效果非常不错,一直纳闷怎么弄的。
首先看到这个全屏是在youtube上,保存了网页察看,实在是没法知道如何实现的,隐约看到有控制flash的层,但是这个绝对不可能会出现在屏幕的全部,最多也只能出现在网页界面的部分全部占据了。
JS控制DIV的位置浮动,并且控制占满网页,这个是可能的,代码也应该不算难,可要实现全屏是不行的。昨天看到了一个blog介绍了全屏的代码,原来是Flash9的特性,怪不得我没听说过呢,原来是新鲜的Flash9,自己一直都在使用Flash8而已。
首先看到这个全屏是在youtube上,保存了网页察看,实在是没法知道如何实现的,隐约看到有控制flash的层,但是这个绝对不可能会出现在屏幕的全部,最多也只能出现在网页界面的部分全部占据了。
JS控制DIV的位置浮动,并且控制占满网页,这个是可能的,代码也应该不算难,可要实现全屏是不行的。昨天看到了一个blog介绍了全屏的代码,原来是Flash9的特性,怪不得我没听说过呢,原来是新鲜的Flash9,自己一直都在使用Flash8而已。
引用
这里不说用JS改变document内容实现的全屏方法,而是FLASH 9以后一种新的实现方法.
首先HTML的<object><embed>标记要添加一个allowfullscreen,值为true.
也就是加上<param name="allowFullScreen" value="true" />
AS2里是没有这个代码的,所以我们要手动添加.
打开你的Flash 8/(zh_cn)/First Run/Classes/FP8/Stage.as
在那一排申明的变量里加上下一句
static var displayState:String;
那么你的flash里,就可以使用
Stage["displayState"] = "fullScreen";
或者
Stage.displayState = "fullScreen";
来启动全屏了.
退出全屏
Stage.displayState = "Normal";
对全屏有影响的除了开始提到的allowfullscreen,还有scaleMode,默认设置是showAll,这以为全屏伸延了整个窗口后,比例保持不变.如果你需要控制尺寸,这个值就应该是noScale
差不多就这样了,实现全屏,只用你把按钮的功能做成改变 Stage的displayState是fullscreen或者Normal.当然,客户端的flash版本必须是9以上.
也可以和JS实现的全屏一起使用,让JS对应FLASH8以前的版本,此方法用于FLASH9以后的版本
首先HTML的<object><embed>标记要添加一个allowfullscreen,值为true.
也就是加上<param name="allowFullScreen" value="true" />
AS2里是没有这个代码的,所以我们要手动添加.
打开你的Flash 8/(zh_cn)/First Run/Classes/FP8/Stage.as
在那一排申明的变量里加上下一句
static var displayState:String;
那么你的flash里,就可以使用
Stage["displayState"] = "fullScreen";
或者
Stage.displayState = "fullScreen";
来启动全屏了.
退出全屏
Stage.displayState = "Normal";
对全屏有影响的除了开始提到的allowfullscreen,还有scaleMode,默认设置是showAll,这以为全屏伸延了整个窗口后,比例保持不变.如果你需要控制尺寸,这个值就应该是noScale
差不多就这样了,实现全屏,只用你把按钮的功能做成改变 Stage的displayState是fullscreen或者Normal.当然,客户端的flash版本必须是9以上.
也可以和JS实现的全屏一起使用,让JS对应FLASH8以前的版本,此方法用于FLASH9以后的版本
昨晚修改一个flash游戏碰到的错误,忙乎了两个小时才查到问题,加了如下语句:
其实游戏在单独查看就没有问题,只是在合成到杂志就出问题了。12点的时候被叫着帮忙看看,刚刚开始的直觉就是游戏的地图偏移了,还打算手工修正,后来觉得应该是合成杂志的时候与0坐标的偏移的问题,正解,把偏移加上就好了,上面的是自动修正偏移的问题。如果有朋友碰到脚本坐标的问题,可以看看是否可以用 “localToGlobal”来解决。
var carx = _car._x;
var cary = _car._y;
point = new Object();
point.x = gamexy_mc._x;
point.y = gamexy_mc._y;
localToGlobal(point);
carx += point.x;
cary += point.y;
var cary = _car._y;
point = new Object();
point.x = gamexy_mc._x;
point.y = gamexy_mc._y;
localToGlobal(point);
carx += point.x;
cary += point.y;
其实游戏在单独查看就没有问题,只是在合成到杂志就出问题了。12点的时候被叫着帮忙看看,刚刚开始的直觉就是游戏的地图偏移了,还打算手工修正,后来觉得应该是合成杂志的时候与0坐标的偏移的问题,正解,把偏移加上就好了,上面的是自动修正偏移的问题。如果有朋友碰到脚本坐标的问题,可以看看是否可以用 “localToGlobal”来解决。
今天弄了一下VC++,尝试使用flash,不错,至少可以两个家伙进行通信。
VC的做法:
1 添加一个控件 shockwave flash
2 添加fscommand指令接收
3 添加调用flash内部函数的方法
Flash的做法:
1 添加脚本显示效果
2 添加fscommand测试
3 添加可以提供外部调用的函数
代码如下,可以提供参考:
Flash代码:
VC++代码:
大家试试啊~~
可以通信后那就啥事都可以做了。
VC的做法:
1 添加一个控件 shockwave flash
2 添加fscommand指令接收
3 添加调用flash内部函数的方法
Flash的做法:
1 添加脚本显示效果
2 添加fscommand测试
3 添加可以提供外部调用的函数
代码如下,可以提供参考:
Flash代码:
import flash.external.*;
ExternalInterface.addCallback("CallMeFromApplication", this, InternalFunction);
function InternalFunction(str:String):String {
a_txt.text = str;
return Array("test", "testsdf");
return "The function was called successfully";
}
//
var a_str:String = "test";
a_txt.text = gggg;
fscommand("ffff", "sdfsdf");
//FlashCall("test");
a_btn.onRelease = function() {
a_txt.text = gggg;
};
ExternalInterface.addCallback("CallMeFromApplication", this, InternalFunction);
function InternalFunction(str:String):String {
a_txt.text = str;
return Array("test", "testsdf");
return "The function was called successfully";
}
//
var a_str:String = "test";
a_txt.text = gggg;
fscommand("ffff", "sdfsdf");
//FlashCall("test");
a_btn.onRelease = function() {
a_txt.text = gggg;
};
VC++代码:
void CflashDlg::FSCommandShockwaveflash2(LPCTSTR command, LPCTSTR args)
{
// TODO: 在此处添加消息处理程序代码
MessageBox(command);
flash_movie.SetVariable("gggg","test");
//((CShockwaveflash2*)GetDlgItem(IDC_SHOCKWAVEFLASH2))->SetVariable("gggg","test");
CString test;
test=flash_movie.CallFunction("<invoke name="CallMeFromApplication"><arguments><string>Some text for TFlashPlayerControl</string></arguments></invoke>");
MessageBox(test);
}
{
// TODO: 在此处添加消息处理程序代码
MessageBox(command);
flash_movie.SetVariable("gggg","test");
//((CShockwaveflash2*)GetDlgItem(IDC_SHOCKWAVEFLASH2))->SetVariable("gggg","test");
CString test;
test=flash_movie.CallFunction("<invoke name="CallMeFromApplication"><arguments><string>Some text for TFlashPlayerControl</string></arguments></invoke>");
MessageBox(test);
}
大家试试啊~~
可以通信后那就啥事都可以做了。
//var addlink = "http://www.aslibra.com"; //test
if (addlink) {
//program by hqlulu 20070406
//add link bottom in movie clip
this.createEmptyMovieClip("link_mc", this.getNextHighestDepth());
link_mc.beginFill(0xFF0000, 0);
var __w:Number = Stage.width;
var __h:Number = Stage.height;
link_mc.moveTo(0, 0);
link_mc.lineTo(__w, 0);
link_mc.lineTo(__w, __h);
link_mc.lineTo(0, __h);
link_mc.lineTo(0, 0);
link_mc.endFill();
link_mc.onRelease = function() {
getURL(addlink, "_blank");
};
}
if (addlink) {
//program by hqlulu 20070406
//add link bottom in movie clip
this.createEmptyMovieClip("link_mc", this.getNextHighestDepth());
link_mc.beginFill(0xFF0000, 0);
var __w:Number = Stage.width;
var __h:Number = Stage.height;
link_mc.moveTo(0, 0);
link_mc.lineTo(__w, 0);
link_mc.lineTo(__w, __h);
link_mc.lineTo(0, __h);
link_mc.lineTo(0, 0);
link_mc.endFill();
link_mc.onRelease = function() {
getURL(addlink, "_blank");
};
}
效果预览:点击这里
原理:
1 判断是否有外部通过url传送过来的参数
2 如果有,则建立与舞台一样长宽的影片剪辑,为透明状态
3 给影片剪辑加上链接