曾经一段时间做flash的程序开发,所以收录很多关于AS的文章
现在很多视频网站都有全屏观看,效果非常不错,一直纳闷怎么弄的。
首先看到这个全屏是在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 给影片剪辑加上链接
[swf width=400 height=150]http://www.aslibra.com/down/txt_style.swf[/swf]
代码如下:
Stage.scaleMode = "noscale";
//
import TextField.StyleSheet;
//new style
var my_styleSheet:StyleSheet = new StyleSheet();
//方式1,每个属性分别赋值
var styleObj:Object = new Object();
styleObj.color = "#0000ff";
styleObj.fontWeight = "bold";
my_styleSheet.setStyle(".bold", styleObj);
delete styleObj;
//方式2,直接写成一个对象
my_styleSheet.setStyle(".fade", {color:"#999999", fontWeight:"bold"});
my_styleSheet.setStyle("p", {color:"#ff0000", fontSize:"14px", fontWeight:"bold"});
//还可以设置伪类
my_styleSheet.setStyle("a", {color:"#ff0000"});
my_styleSheet.setStyle("a:hover", {color:"#000000", fontStyle:"italic"});
//
//txt
var newsText:String = "<p>李白简介</p>";
newsText += "<br>李白(<span class='fade'>公元701年—公元762年</span>),";
newsText += "字太白,号青莲居士。";
newsText += "李白是唐朝著名诗人,也是中国最著名的诗人之一,<span class='bold'></span> ";
newsText += "是我国文学史上继屈原之后又一伟大的浪漫主义诗人";
newsText += ",有“诗仙”之称。<br>李白和杜甫合称“<span class='bold'>李杜</span>”。 ";
newsText += "<br>link style: <a href='http://www.aslibra.com' target='_blank'>";
newsText += "<u> http://www.aslibra.com </u></a>";
//
//set
news_txt.styleSheet = my_styleSheet;
news_txt.wordWrap = true;
news_txt.multiline = true;
news_txt.html = true;
news_txt.htmlText = newsText;
点击这里下载fla文件
代码如下:
Stage.scaleMode = "noscale";
//
import TextField.StyleSheet;
//new style
var my_styleSheet:StyleSheet = new StyleSheet();
//方式1,每个属性分别赋值
var styleObj:Object = new Object();
styleObj.color = "#0000ff";
styleObj.fontWeight = "bold";
my_styleSheet.setStyle(".bold", styleObj);
delete styleObj;
//方式2,直接写成一个对象
my_styleSheet.setStyle(".fade", {color:"#999999", fontWeight:"bold"});
my_styleSheet.setStyle("p", {color:"#ff0000", fontSize:"14px", fontWeight:"bold"});
//还可以设置伪类
my_styleSheet.setStyle("a", {color:"#ff0000"});
my_styleSheet.setStyle("a:hover", {color:"#000000", fontStyle:"italic"});
//
//txt
var newsText:String = "<p>李白简介</p>";
newsText += "<br>李白(<span class='fade'>公元701年—公元762年</span>),";
newsText += "字太白,号青莲居士。";
newsText += "李白是唐朝著名诗人,也是中国最著名的诗人之一,<span class='bold'></span> ";
newsText += "是我国文学史上继屈原之后又一伟大的浪漫主义诗人";
newsText += ",有“诗仙”之称。<br>李白和杜甫合称“<span class='bold'>李杜</span>”。 ";
newsText += "<br>link style: <a href='http://www.aslibra.com' target='_blank'>";
newsText += "<u> http://www.aslibra.com </u></a>";
//
//set
news_txt.styleSheet = my_styleSheet;
news_txt.wordWrap = true;
news_txt.multiline = true;
news_txt.html = true;
news_txt.htmlText = newsText;
点击这里下载fla文件
MD5的加密有广泛的应用,flash里面有两个写法:
1 写成 md5 的类文件
2 写成 md5 的函数
看怎么方便了,这里列举两个方法的范例可以给大家下载:
1 类文件和实例:up/1166696921.rar
2 函数的写法和实例:up/1166697053.rar
大家使用愉快~
1 写成 md5 的类文件
2 写成 md5 的函数
看怎么方便了,这里列举两个方法的范例可以给大家下载:
1 类文件和实例:up/1166696921.rar
2 函数的写法和实例:up/1166697053.rar
大家使用愉快~





