- 浏览: 378576 次
- 性别:
- 来自: 青岛
-
文章分类
最新评论
-
lippeng:
楼主,你好!这篇中提到的一个话题,是我现在非常关心的,我自己还 ...
使用JUnit测试通过 HttpClient(https协议)访问支付宝接口时不能自动获得证书的解决办法 -
snoopy7713:
[2014-03-14 17:55:06.651] TCP ...
刚完成Struts的Virgo插件,分享一下设计思路和Virgo OSGi内部的独特机制 -
snoopy7713:
需要看一下,你的代码说的挺模糊的。我的联系方式QQ 16200 ...
刚完成Struts的Virgo插件,分享一下设计思路和Virgo OSGi内部的独特机制 -
roronjavaeye:
不错,受教了
java_class反编译后的代码还原 -
daoyongyu:
讲的很好,很详细。
Struts2配置文件详解——struts.properties
今天折腾了大半天Flash与Flex3的配合,特总结一下心得体会:
1)
如果是通过Embed来嵌入swf的话,Flex3只支持FlashCS2所创建的swf.
2)
如果是通过loader来加载的话,只有AS3的swf才能在加载后被控制(这和第一点相反,我花了很长时间才弄明发现这两点,汗!)
3)
如果要直接加载到Flex当中,类必须继承UIComponent,这好比在Flash中必须继承DisplayObject
4)
如果要把Flash的组建打包给Flex使用,应该使用FlexComponentKit,把MC导出成swc。然后在Flex中把swc配置到
Library Path后,对应的组建就可以作为一等公明在Flex中使用了。如果MC是绑定了类的,那么对应类继承UIComponent就可以了。
在googleDocs下了一个corelib包,不是蛮实用的(前段时间还自己写trim,浪费时间啊),E文看得累,以备以后查看
//
图相用法
import com.adobe.images.JPGEncoder;
public function
submit():void {
var encoder:JPGEncoder = new JPGEncoder(80);
var
bytes:ByteArray = encoder.encode(getBitmapData());
var
request:URLRequest = new URLRequest(UPLOAD_PAGE);
//data值就为图片编码数据
ByteArray;
request.data = bytes;
request.method =
URLRequestMethod.POST;
//这个是关键,内容类型必须是下面文件流形式;
request.contentType
= “application/octet-stream”;
var loader:URLLoader = new
URLLoader();
loader.load(request);
}
//加密用法
import
com.adobe.crypto.SHA1;
trace(SHA1.hash(”132″));
//utils包比较繁锁,全都是静态方法
import com.adobe.utils.ArrayUtil;
ArrayUtil.arrayContainsValue(arr,
value);//arr是否包含value
ArrayUtil.arraysAreEqual(arr1,
arr2);//arr1,arr2是否相等
ArrayUtil.copyArray(a);//深拷贝
ArrayUtil.removeValueFromArray(arr,
value);//删除值value
import com.adobe.utils.StringUtil;
StringUtil.beginsWith(str1,
str2);//str1是否以str2开头
StringUtil.endsWith(str1, str2);//str1是否以str2结束
StringUtil.ltrim(str);//
去左空格
StringUtil.rtrim();
StringUtil.trim();
StringUtil.remove(str1,
str2);//从str1删除str2
StringUtil.replace(input, replace,
replaceWith);//把input中的replace置换为replaceWith
StringUtil.stringsAreEqual(s1,
s2, caseSensitive);//s1,s2是否相等,caseSensitive是否大小写敏感
import com.adobe.utils.DateUtil;
DateUtil.compareDates(d1,
d2);//比较,d1>d2返回-1,=返回0,<返回1
DateUtil.getAMPM(d);//返回AM or PM
….
功能比较全, 太多了, 还有几个不知道
import com.adobe.utils.NumberFormatter;
NumberFormatter.addLeadingZero(5);//
返回补0的数,如1变成01
import com.adobe.utils.IntUtil;
IntUtil.toHex(n,bigEndian);//16进
制,bigEndian指定是后补0,还是前补0
IntUtil.rol(n, m);//n右移m位(位运算)
IntUtil.ror(n,
m);//左移
import com.adobe.utils.DictionaryUtil;
DictionaryUtil.getKeys(d);//
得到键名
DictionaryUtil.getValues(d);//得到值
import com.adobe.utils.XMLUtil;
这个还不会用,以后慢慢摸,本来AS3的XML就很完善了
corelib包下载地址
Flash跨域调用问题
由于安全沙箱的限制, 处于不同域下的文件(swf,
xml等)在默认状态下是不能相互调用的. 比如A域名下的flash不能访问B域名下的XML.
除非B域名在根目录下的”crossdomain.xml”文档中包含A域名. 但存在以下问题:
1) 不允许改动根目录
解决方法:
在AS3允许crossdomain.xml不在根目录中,这时就要用
Security.loadPolicyFile(”http://www.example.com/sub/dir/pf.xml”);这样的方法来指
定. 当然只有crossdomain.xml所在目录是可以访问的.
2) 不允许添加crossdomain.xml
解决方法: 如果要被读取的是swf文件,
只要在主函数中加入flash.system.Security.allDomain(”A”)即可. 但如果是其他各式的文件,
比如xml文档的话怎么办呢?
可以把xml读取到B上的b.swf(b上加入flash.system.Security.allDomain(”A”)).
然后在A的a.swf中加载b.swf,然后读取b.swf中的xml. 类似于:
_mc =event.target.content as
Sprite;
trace(_mc["var"]);
Loader与URLLoader的比较
AS3已经中Loader与
URLLoader是两个比较容易混淆的类,特此区分:
应用范围
Loader: swf,图片(jpg,png,gif)
URLLoader:
文本文件(xml,php,jsp…)
使用方法
Loader:
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
loadComplete);
private function loadComplete(event:Event)
{
trace("done");addChild(loader);}
URLLoader:
xmlLoader.dataFormat=URLLoaderDataFormat.TEXT;
xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded);
private
function xmlLoaded(event:Event)
{
try {myXML =
XML(event.target.data);area.text=myXML;}
catch (e:TypeError)
{area.text="Load faild:\n"+e.message;}
}
AS3-点阵化文字
上面是这两天做的一个小东西,它能够把输入的文字用点阵来描述,并存这些信息存入一个数组当中。然后用这个数组来重新生成“文字”,这些
“文字”可以由任意的Sprite组成,并且可以随意加上动画。
承蒙大家厚爱,把源文件放在这里供大家下载。为了便于将来扩展,我使用的是Observer设计模式,希望不会把大家搞混淆。
源文件下载
Javascript与Flash互动
在SwfObject解决Html与Flash
之间传递参数问题中已经简要介绍了如何使用SwfObject在页面中插入Flash,如何在初始时由JS向Flash传递参数,以及运行时Flash如
何调用JavaScript中函数。这里主要介绍运行时JavaScript如何互相传递参数, 并控制Flash的播放。
源文件下载
其实JS能直接控制Flash的播放,主要通过下列方法实现:
Play() —————————————- 播放动画
StopPlay()
————————————停止动画
IsPlaying()———————————– 动画是否正在播放
GotoFrame(frame_number)—————-
跳转到某帧
TotalFrames()——————————- 获取动画总帧数
CurrentFrame()——————————回传
当前动画所在帧数-1
Rewind()————————————-使动画返回第一帧
SetZoomRect(left,top,right,buttom)
——-放大指定区域
Zoom(percent)——————————改变动画大小
Pan(x_position,y_position,unit)
————使动画在x,y方向上平移
PercentLoaded()—————————-返回动画被载入的百分比
LoadMovie(level_number,path)———–
加载动画
TGotoFrame(movie_clip,frame_number)- movie_clip跳转到指定帧数
TGotoLabel(movie_clip,label_name)——
movie_clip跳转到指定标签
TCurrentFrame(movie_clip)————— 回传movie_clip当前帧-1
TCurrentLabel(movie_clip)
—————–回传movie_clip当前标签
TPlay(movie_clip)—————————播放movie_clip
TStopPlay(movie_clip)
———————-停止movie_clip的播放
GetVariable(variable_name)—————–获取变量
SetVariable(variable_name,value)
———–变量赋值
TCallFrame(movie_clip,frame_number)—call指定帧上的action
TCallLabel(movie_clip,label)
—————-call指定标签上的action
TGetProperty(movie_clip,property)——–获取
movie_clip的指定属性
TSetProperty(movie_clip,property,number)-设置movie_clip
的指定属性
Read the rest of this entry »
Flash中组件(Component)的创建和使用
这里简要介绍Flash中自定义组建的创
建和使用方法.由于工作的原因,我用的是AS2, AS3的应该类似。
组建的创建
1
创建一个类文件,比如ClassLoader。这个文件实现组件的主要功能。它可以调用其它类,比如
cn.adamstudio.effects.TextAnimation(这个类自己写,可以是简单的一个trace),这些类将会自动打包到组件中。
//ClassLoader类:
[IconFile("spidercore.png")];
class ClassLoader
extends MovieClip
{
public function setSize()
{
_width=18;
_height=18;
}
public function doNothing():Void
{
// Trick the compiler into
including
// the TextAnimation class in the component.
cn.adamstudio.effects.TextAnimation;
}
}
2 创建一个Fla文件,如SWC_Generator。在其中新建一个MovieClip,如swc, 设置如下图:
3 在库中这个MC上右键,在右键菜单里选择”Component Definition…”.设置如下图:
4
此时在库面板中可以看出,MC已经转换成了一个元件.因为元件处在编辑状态.所以直接导入一个png图标到舞台上,如icon.png.这个图标是新建组
建的图形标志,将来在库面板和舞台上将会看到它的身影.
5 在库中这个MC上右键,在右键菜单里选择”Export SWC File …”,保存SWC文件.
组建的使用
1 将生成的SWC文件拷入:
C:\Documents and Settings\User \Local
Settings\ Application Data \Adobe \Flash CS3 \en
\Configuration\Components\swc
2 新建一个Flash文件,如test.fla.在Flash中重新打开Component面板后,会发现swc目录下有我们拷入的SWC文件.将其拖入舞 台后,在舞台上删除之.(只需要它在库中).
3 在第一帧上加入代码:
import cn.adamstudio.effects.TextAnimation;
var
textAni=new TextAnimation;
即使本地电脑中没有cn.adamstudio.effects.TextAnimation,程序照样能运行,因为它这个类已经包含在了SWC文 件当中.
注:SWC_Generator.fla和test.fla的输出设置都应该选择AS2,否则无法得到正确结果;
源文件下载:源文件
AS2 - 创建MovieClip的子类
在Flash中作视觉表现时,常常需要创建
MovieClip的子类。下面是一个不错的框架:
Avatar子类:
class cn.adamstudio.Avatar extends MovieClip
{
//定
义静态变量,用于初始化
public static var HAPPY:Number = 0;
public static var
SAD:Number = 1;
public static var IDLE:Number = 2;
//定义静态方法,用于简洁地创建自己的instance
public static function
createAvatar(name:String, target:MovieClip, depth:Number, x:Number,
y:Number):Avatar
{
var av:Avatar =
Avatar(target.attachMovie(”AvatarSymbol”, name, depth));
av.init(x,y);
return
av;
}
//设置instance的坐标
public function init(x:Number, y:Number):Void
{
setState(Avatar.HAPPY);
this._x
= x;
this._y = y;
}
//初始化instance
public function setState(newState:Number):Void
{
switch
(newState) {
case Avatar.HAPPY :
this.gotoAndStop(”HAPPY”);
break;
case Avatar.SAD :
this.gotoAndStop(”SAD”);
break;
case Avatar.IDLE :
this.gotoAndStop(”IDLE”);
break;
}
}
}
注:
其中的静态变量和静态函数是可选的,可以根据需求的不同而有所变化。
主文档中:
import cn.adamstudio.Avatar;
var
av:Avatar=Avatar.createAvatar("avatar",_root,0,200,200);
这种方法的特点和优点是用使用子类的静态方法来实例化MovieClip的子类,在主文档中非常简洁。
源文件下载
AS-可正可负随机数的算法
我以前的写法都是:
Math.random()*2-1
今
天看到一个比较有意思的写法:
Math.random()-Math.random()
AS3鼠标坐标总结
鼠标是Flash里追主要的互动因素,经常需要侦测鼠标事件(AS3中鼠标
事件小结)和得到鼠标的坐标。鼠标坐标的获取可以分为在文档类和在子类中,两种不同的情况。
1)如果是在时间线轴上,或者文档类上使用:
stage.mouseX 和 stage.mouseY
2)在子类(如_sprite:Sprite)上使用:
_sprite.mouseX 和 _sprite.mouseY
这里得到
的是鼠标相对于_sprite的坐标。如果需要的是相对于舞台的坐标,则应该使用localToGlobal,如:
var
mousePoint:Point=new Point(_sprite.mouseX, _sprite.mouseY);
mousePoint=_sprite.localToGlobal(mousePoint);
trace("Stage
coordinates:"+mousePoint);
注:要使用以上代码别忘了 import flash.geom.Point;
AS3练习-往返运动
这是今天做的一个AS3的运动练习,主要是加速和减速运动的配合。发现粒子多了就会出现一些奇怪的现象,比如偶尔会几个粒子在原位置闪动。
可能更Flash的代码执行顺序有关,暂时还搞不懂。
as3运行时错误中文说明
1000 系统内存不足。 系统可用内存无法满足 Flash Player
编译代码的需要。请关闭系统上正在运行的某些应用程序或进程。
1001 未实现方法 _。
1002
Number.toPrecision 的范围是 1 至 21。Number.toFixed 和 Number.toExponential
的范围是 0 至 20。指定的值不在期望范围之内。 指定的值不在 precision 参数的期望范围之内。Number.toPrecision
的范围是 1 至 21。Number.toFixed 和 Number.toExponential 的范围是 0 至 20。
1003
radix 参数必须介于 2 至 36 之间;得到 _。 为方法或属性的 radix 参数传递的值小于 2 或大于 36。请传递一个介于 2 至
36 之间的值作为 radix 参数。
1004 对不兼容的对象调用方法 _。
尝试调用的方法不适用于指定对象。如果已将原型函数从一个对象复制到另一个对象然后又调用此函数,但目标对象类型与原始对象类型不同,则会发生此错
误。请确保目标对象与原始对象的类型相同。有关详细信息,请参阅 ECMAScript Language
Specification(《ECMAScript 语言规范》)第 3 版中的第 15 章。
1005 数组索引不是正整数 (_)。
尝试使用非正整数的索引值访问数组成员。仅传递正整数作为数组的索引值。
1006 _ 不是函数。
尝试调用不存在的函数时,发生此错误。请确保正在调用正确的函数且自 ActionScript 2.0 以来此 API
尚未发生更改。此外,请确保正在使用正确的对象。例如,使用以下代码时,将出现此错误(由于最后一行错误调用了变量 big 而未调用变量 blg):
var
blg:String = “foo”;
var big:Sprite = new Sprite();
var error:int =
big.length();
1007 尝试对非构造函数进行实例化。
1008 _ 指代不明确;发现多个匹配的绑定。
1009
无法访问空对象引用的属性或方法。 计算结果为 null 的对象可以不包含任何属性。在某些意外(尽管有效)的情况下,可能发生此错误。以创建
Sprite 对象的以下代码为例。由于从未将此 Sprite 对象添加到显示列表中(使用 DisplayObjectContainer 对象的
addChild() 方法),因此其 stage 属性设置为 null。在这种情况下,此示例将生成此错误,这是因为 Sprite 对象的
stage 属性不能拥有任何属性: Read the rest of this entry »
AIR-最新RSSReader(基于Flash)
经过长时间的努力,终于用Flash
CS3+AS3+AIR Beta2做出了RSSReader 2.0。
前一段时间用html+JS做了个WordpressReader,
虽然实现了自动升级,等很cool的功能,但界面还是比较简朴。
AIR读取Blog RSS - Adobe AIR Beta2 实践
WordpressReader
1.1 完成
这次做的RSSReader是基于ActionScript3的,界面漂亮了很多,而且用户体验也有了显著的提高。
程序下载:http://www.adamstudio.cn/blog/download/RSSReader.air
初
始介面:
文章阅读界面:
实现的功能:
1 读取服务器端XML文档;
2 将读取的XML文档储存到AIR的内建本地数据库SQLite !!!(太酷了!)
3
判断网络连接状况,如果网络畅通就读取并以动画的形式展示文章标题,同时用最新文章刷新SQLite中已有文章。如果网络不通,则读取并显示SQLite
中储存的文章;
4 以动画形式展示动画文章标题;
5 自定义事件和文章标题与文章内容之间的切换。
多说也无用,试用一下
你就知道Adobe AIR有多强了!
程序下载:http://www.adamstudio.cn/blog/download/RSSReader.air
Flash-navigateToURL取代getURL
AS3中使用
navigateToURL取代了getURL,个人感觉navigateToURL最大的好处就是方便了传递参数,不足的地方嘛,据说弹出的新窗口会被
浏览器拦截。需要使用:ExternalInterface.call(”window.open”,winurl,”");来避免,但是这是采用了调用
JS来做,是必须在浏览器支撑并且JS可以使用的情况下(没有测试)。
另外发现在Adobe
AIR中使用navigateToURL打开连接时,只能在新窗口中打开(不会被浏览器拦截),”_self”,”_parent”,”_top”都没有
用.而且都是调用浏览器,而不是在AIR中打开.
具体用法如下:
package {
import flash.display.Sprite;
import
flash.net.navigateToURL;
import flash.net.URLRequest;
import
flash.net.URLVariables;
public class NavigateToURLExample extends Sprite {
public function NavigateToURLExample() {
var url:String
=
“http://www.adobe.com”;
var variables:URLVariables = new
URLVariables();
variables.exampleSessionId = new Date().getTime();
variables.exampleUserLabel
= “Your Name”;
var request:URLRequest = new URLRequest(url);
request.data
= variables;
try {
navigateToURL(request);
}
catch
(e:Error) {
// handle error here
}
}
}
}
Flash-如何改变动态文本透明度?
因为Flash的系统字体不直接支持透明,所以我们得通
过嵌入字体或者Filter类来解决。简单地通过改变动态文本的alpha或者它做在的mc的alpha都是没有用的。
1 嵌入字体
这种方法最简单,选中动态文本框,然后在属性面板中点嵌入(“Embed”)按钮,按后选择要全部字库嵌入,还是只嵌入部分字
符。但代价是文件会变大,尤其在嵌入中文字体的时候,绝对是噩梦。当然只是嵌入下载进度0-9这样简单的几个字符,还是非常方便的。
2 Filter
这是从Blueidea学来的,就是给动态文本增加一个滤镜,即使是空滤镜也可以。
AS3中代码
//建立
动态文本
var my_txt:TextField=new TextField();
my_txt.autoSize =
TextFieldAutoSize.LEFT;
my_txt.background = true;
my_txt.border =
true;
my_txt.text = “Hello world and welcome to the show.”;
//定义滤镜
var
txt_blur:BlurFilter = new BlurFilter(0, 0, 0);
my_txt.filters =
[txt_blur];
my_txt.alpha = 0.5;
//加入动态文本
my_txt.x=my_txt.y=50;
addChild(my_txt);
AS2
中代码
import flash.filters.BlurFilter;
var txt_blur:BlurFilter = new
BlurFilter(0, 0, 0);
this.createTextField(”my_txt”, 1, 100, 100,
300, 100);
my_txt.text = “DDGGDGDGDGDG”;
my_txt.filters =
[txt_blur];
my_txt._alpha = 50;
3 BitmapData 和 ColorMatrixFilter
据HbrO说BitmapData和
ColorMatrixFilter也能实现动态文本的半透明效果。但我这人比较懒,发现一种方法之后就犯懒了。以后有时间再研究吧 ,哈哈。
AS3中鼠标事件小结
鼠标事件(MouseEvent)和鼠标位置(AS3鼠标坐标总结)是
RIA中最重要的人机交互途径。最近在做一个动态产品展示的系统ProdutShow的时候才发现自己对鼠标事件的了解有多么肤浅。现在
ProductShow已经做完了,这里把在使用鼠标事件时要注意的问题总结一下:
1 鼠标事件分为MOUSE_OVER,
MOUSE_MOVE, MOUSE_DOWN, MOUSE_UP, MOUSE_OUT,
MOUSE_WHEEL和MOUSE_LEAVE。其中前六个事件都来自flash.events.MouseEvent类,最后一个
MOUSE_LEAVE却是来自flash.events.Event,在导入类包的时候一定要注意这个问题,因为我在这点上就花了很长时间调试,才得发
现问题所在。
MOUSE_OVER - 鼠标移动到目标对象之上时触发, 可以用于模拟按钮的mouse over效果;
MOUSE_MOVE
- 鼠标在目标对象之上移动时触发,主要用于判断。比如判断在拖拽实例时,实例是否在允许的范围之内,如果超出,立刻停止拖拽或者重新设定实例的坐标;
MOUSE_DOWN
-
鼠标在目标对象之上按下时触发。注意,只有按下鼠标左键时才会触发,右键和滚轮都不会触发。在目标对象之外按下鼠标左键,再移动到目标对象之上时,也不会
触发;
MOUSE_UP -
鼠标在目标对象之上松开时触发。注意,只有松开鼠标左键时才会触发,右键和滚轮都不会触发。在目标对象之上按下鼠标左键,再移动到目标对象之外松开时,不
会触发。但在目标对象之外按下鼠标左键,再移动到目标对象之上松开时,就会触发。
MOUSE_OUT- 鼠标移动到目标对象之外时触发。
MOUSE_WHEEL
- 鼠标在目标对象之上转动滚轮时触发。
MOUSE_LEAVE -
当光标离开舞台时触发(stage.addEventListener(Event.MOUSE_LEAVE,leaveHandler);)。在使用自
定鼠标后,在鼠标离开舞台时,触发MOUSE_LEAVE事件,然后可以把自定义的鼠标隐藏掉,避免还停留在舞台上。
2 mouseChildren。目标对象中含有子实例时,感应鼠标行为的是子时列,而非目标对象。如果使用 cursor.mouseEnabled=false; 就可以由目标对象来更应鼠标行为。
3 mouseEnabled。当实例重叠时,出于显示列表上方的实例总比下方实例更有优先权感应鼠标行为。当想让下方实例感应鼠标行为时使用 cursor.mouseEnabled=false; 即可。这常用于自定义鼠标后,去除自定义鼠标对鼠标行为的干涉,因为自定义鼠标往往一直处于鼠标下方,其他实例无法再感应到鼠标的变化。
另外,也许DOUBLE_CLICK也应该算做鼠标事件,但要使用它,必须先让doubleClickEnabled=true:
var
bg:Sprite=new Sprite();
bg.doubleClickEnabled=true;
bg.addEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);
…
typeof、is、as的区别
typeof、is、as都是用于判断变量类型的,只是各自的
返回值不同。请看下方代码:
var a:Number=0;
trace(typeof(a));//输出:Number
trace(typeof(typeof(a)));//
输出:String
trace(a is Number);//输出:true
trace(a as Number);//输出:0
trace(a
as String);//输出:null
Null、NaN和undefined的区别
其实Null、NaN和
undefined都是变量的默认初始值。变量类型不同,系统给与的初始值就不同:
int,uint - 0
Boolean -
false
Number - NaN
String,Array,Object - null
未指定变量类型 -
undefined
SwfObject解决Html与Flash之间传递参数问题
在彻底摒弃Adobe的
激活ActiveX控件的方法一文中已经详细分析了使用Adobe提供的AC_RunActiveContent.js导致HTML与Flash之间不能
传递参数的问题。经过Adobe论坛里GWD的提示,我转而寻求SwfObject的帮助。发现SwfObject是一个很好的解决方案。
SwfObject英文介绍:http://blog.deconcept.com/swfobject/
SwfObject
中文翻译:http://www.awflasher.com/flash/articles/swfobj.htm
源
文件:SWFObject 1.5
关于SwfObject的介绍上面两篇文章已经讲的很详细了。我这里只列一段标准的应用和一些上面两篇文章没有提到的问题.
Html中的JS代码
<script type="text/javascript"
src="swfobject.js"></script>
<script
type="text/javascript">
// <![CDATA[
var so = new
SWFObject("asCallJs.swf", "MyDemo", "500", "400", "9", "#FF6600");
so.addVariable("param1",
"Parameter1"); // this line is optional, but this example uses the
variable and displays this text inside the flash movie
so.addVariable("param2",
"Parameter2");
so.useExpressInstall('expressinstall.swf');
so.write("flashcontent");
//
]]>
</script><!--被AS调用的JS函数-->
<script
language="Javascript">
// <![CDATA[
// adds two numbers, and
sends the result back to ActionScript
function addNumbers(num1,
num2)
{
result=num1 + num2;
alert("3+7=" + result);
return
(result);
}
// ]]>
</script> Read the rest of this
entry »
彻底摒弃Adobe的激活ActiveX控件的方法
大家知道,在IE中只有激活了
ActiveX控件,Flash才能够与浏览者交互,否则得手动点一下激活。Flash也提供了一个很“方便”的解决方案,就是在发布swf文件的同时,
发布html文件即可。这样Flash会在生成一个swf文件,一个包含swf的Html文件,和一个“AC_RunActiveContent.js”
文件。Html文件通过调用AC_RunActiveContent.js,实现激活ActiveX控件。这一切都很便捷,直到你希望在html和
Flash之间传递参数。
问题出现
在很多商业网站中,都涉及到用同一个Flash来显示大量不同的内容(图片,视频或产品信息等),这就
需要向这个Flash传递参数。常见的传参方法有三种,但都会受到AC_RunActiveContent.js的不良影响。
1
ExternalInterface:
这是困扰我最久的一个问题。据Adobe的描述,这是最好的传参方法,能都非常自由和直接地在AS和JS之间互相传递参数或者互相调用函数。但我在使用
Adobe的示例文件时发现,在IE中AS无法得到JS的返回值(ExternalInterface在IE中的Bug),经过不断的尝试才发现是
AC_RunActiveContent.js在捣鬼,只要把它和html中对应代码以
及<noscript></noscript>删除就一切正常了。
请看示例:
Player8,AS2: http://www.adamstudio.cn/lab/var/test/test_v8.html
Player9,AS3:
http://www.adamstudio.cn/lab/var/test/test_v9.html
如
果带有激活ActiveX控件的那段JS代码,IE中就无法得到返回值,请看:
http://www.adamstudio.cn/lab/var/test/test_error.html
所
有源文件:http://www.adamstudio.cn/lab/var/test/test.rar
2
FlashVars:
3 URL传递参数
后两种方法受AC_RunActiveContent.js的影响更大,因为这两种方法都是
在<noscript></noscript>之间加入代码,而在JS能运行的浏览器当中(绝大多数浏览器都能运行JS),这些
代码根本就不会运行。所以无论在Firefox或者IE中都不起任何作用!
也就是说常用的三种在Html与AS之间传递参数的方法均受到激活
ActiveX控件的那段代码的影响。所以要想在html和Flash之间传递参数,就必须摒弃Flash自带的激活ActiveX控件的方案!
替代方案:SwfObject 请参考SwfObject解决Html与Flash之间传递参数问题
发表评论
-
无法为区域设置“zh_CN”解析资源束“core”
2012-01-18 16:51 2219zh_CN解析资源束ViewerStrings ” ... -
使用FlexComponentKit实现flash和flex完美互通
2012-01-18 15:41 1011看了点资料,把flex中使用flash的影片剪辑得方法研 ... -
Flex4.0 SDK,AS3工程,选择性的嵌入字体
2010-04-27 09:21 23811. 嵌入字体 [Embed(source=" ... -
Flex编译参数(2)
2010-04-26 17:02 2160以前想着用Adobe Flex Builder for Lin ... -
Flex编程注意之Flex Complier参数
2010-04-26 16:48 1168在介绍这些参数之前,先要介绍一个工具:mxmlc.exe ... -
flash builder 许可证过期
2010-04-21 14:58 2720在flash builder的安装目录下的plugin文件夹下 ... -
MyEclipse 8.5安装Flash Builder 4 plug-in
2010-04-21 14:29 4424从 http://www.eclipse.org 下载 Ecl ... -
我的FLASH情结2010—— 浅谈FLASH WEB GAME与创业
2010-04-07 18:53 1211声明:本文系转载,对 ... -
Flex值得一看参考资源
2010-04-07 18:47 8451. Flexboxhttp://flex box.mrin ... -
一些Flex开源项目的整理
2010-04-07 18:24 18011、as3ebaylib http://code.goo ... -
在Flash中嵌入元数据标签(很详细)
2010-04-07 11:14 2341设置舞台大小 [SWF(width ... -
Flex元数据标签
2010-04-07 10:58 887元数据标签是一种特殊的标签,它在代码中的作用就是向编译器提 ... -
as3中的元数据标签
2010-04-07 10:44 1194最近开始自己学着写flex组件,于是开始参考flex原有自带的 ... -
flash xmlsocket policy 问题
2010-03-01 10:05 1865Firefox : 1. 只要 conn ...
相关推荐
1. **Flex 3D组件**:Flex 3D特效主要通过使用以下几种关键组件来实现: - `mx:ViewStack`:提供在不同视图之间切换的能力,可以用于创建3D翻转效果。 - `mx:Accordion`:允许用户展开和折叠多个面板,可实现3D...
- **demo_central**:这是一个**Java Web** 项目,主要包括以下几个方面: - 由**Spring** 实现业务逻辑。 - 由**Hibernate** 实现数据库的读写访问控制。 - 通过**BlazeDS** 提供**Flex** 访问的远程对象接口。 ...
在压缩包的文件名称列表中,我们可以看到以下几个文件: 1. `mimetype`:这是AIR应用程序的标准文件,用于标识压缩包的类型。在AIR应用程序中,这个文件通常是用来指示其为一个AIR归档文件。 2. `AIRmp3.swf`:这...
在Flex测试中,通常关注以下几个方面: 1. **单元测试**: - 使用FlexUnit或Spock框架编写ActionScript和MXML组件的单元测试,确保代码功能正确。 2. **集成测试**: - 验证不同组件之间的交互,可以使用模拟...
3.4.7-卡尔曼滤波与运动估计算法介绍和使用 STM32串口通信 openmv+STM32串口通信 openmv串口通信openmv识别物体 openmv神经网络训练 openmv数字识
内容概要:本文档详细介绍了MATLAB的高级编程技巧,涵盖高级数据结构与操作、高效编程与优化、高级可视化技术、并行计算与GPU编程、代码调试与性能分析以及高级算法与数值方法六个主要部分。具体内容包括细胞数组和结构体的创建与使用、面向对象编程、向量化
用于设计和测试受洋流和风影响的单点海洋系泊设备。提供的数据库(可以添加到)将允许您在典型的当前条件下构建系泊并对其进行测试,或者通过电流剖面的时间序列迫使其生成系泊形状和组件位置的时间序列。该程序为地下和地面系泊提供了解决方案,甚至可以预测地面系泊何时被淹没。将溶液上下翻转,它还模拟了拖曳体,在拖曳体中,一个负浮力(重)体被拖在一艘移动的船后面(有一个立管下沉器)。如果聚焦电流剖面随时间变化(即来自ADCP),则会保存/访问系泊组件位置和形状的动画(电影)或时间(序列)历史。系泊装置可以保存和取回
基于C++的无锁队列,有信号量,可以阻塞读、写线程,目前测试10线程读,10线程写是没有问题的
内容概要:本文详细介绍了混合动力汽车在交通拥堵情况下采用等效燃油消耗最小策略(ECMS)进行节能控制的研究与实现。通过MATLAB代码展示了如何模拟前车速度、跟车策略以及能量管理系统的工作原理。文中提到,ECMS算法能够根据实时速度、加速度和电池状态等因素动态调整发动机和电动机之间的能量分配,从而达到最佳的燃油经济性和排放性能。此外,文章还讨论了安全距离模型、动能回收机制以及应对突发情况的具体措施,如急减速时的能量管理和电池温度保护等。 适合人群:从事汽车工程、自动化控制领域的研究人员和技术人员,尤其是关注混合动力汽车节能技术的专业人士。 使用场景及目标:适用于希望深入了解混合动力汽车在复杂城市交通环境中的节能控制策略及其具体实施方法的人群。目标是在理论层面掌握ECMS算法的核心思想,并能够在实践中应用相关技术和工具进行验证。 其他说明:文章不仅提供了详细的代码示例,还分享了一些实用的操作技巧和经验教训,帮助读者更好地理解和运用这一先进技术。
环形队列的一种实现方式
2005-2019年各地级市绿色专利申请量数据 1、时间2005-2019年 2、来源:国家知识产权j 3、指标:省份、城市、年份、绿色发明专利申请量、绿色实用新型专利申请量 4、范围:360+地级市
# 基于C语言的WebP图片编码解码库 ## 项目简介 本项目是一个基于C语言的WebP图片编码解码库。WebP是一种现代开源图像格式,支持无损和有损压缩,在保持图像质量的同时能显著减少图像文件大小,加快传输速度。此库实现了WebP格式的核心编码解码功能,还支持动画WebP图像的编码和组装,以及颜色空间转换、图像缩放等辅助功能,适用于网页开发、图像处理软件、视频编辑工具等多种应用场景。 ## 项目的主要特性和功能 1. 高性能采用优化算法和指令集(如SSE2、NEON、MIPS等)加速编码解码过程。 2. 灵活性支持多种图像格式(如RGB、YUV)和颜色空间转换。 3. 支持动画可编码和组装WebP格式的动画图像。 4. 内存管理提供安全的内存分配和释放函数,防止内存泄漏。 5. 错误处理具备错误报告和处理机制,确保程序的健壮性。 6. 核心功能实现图像分析、预测、变换、量化、反变换等编码解码步骤,并提供进度报告机制。 ## 安装使用步骤
本资源是《基于电影知识图谱和微信小程序的智能问答系统新版源码+说明.zip》,专为计算机科学领域的学习者设计,融合了人工智能、数据管理和前端应用开发的先进技术。通过构建电影知识图谱,该系统能够深度理解和处理用户的电影相关查询,提供精准且丰富的答案。微信小程序作为前端交互平台,以其便捷性和广泛覆盖性,让用户随时随地享受智能化的电影信息服务。此资源不仅是课程设计和毕业设计的理想选择,也为开发者提供了实践前沿技术的机会,助力提升编程能力和项目经验。请务必用于学习和研究目的,不得用于商业用途。
# 基于TensorFlow的GAN图像生成项目SteGANography ## 项目简介 本项目是一个基于TensorFlow深度学习框架的图像生成项目,主要利用生成对抗网络(GAN)进行图像混淆与恢复的研究。项目名称中的“Ste”代表Steganography(隐写术),是一种隐藏信息的技术。本项目的目的是利用神经网络将信息嵌入图像中,然后再恢复出来。这涉及到图像生成、加密和解密的过程。 ## 主要功能及特点 利用GAN生成混淆图像。 通过对混淆图像进行解码恢复原始图像。 包含Alice、Bob和Eve三个网络部分,分别负责生成、处理和识别图像。 提供了可视化的功能,能够绘制关于训练迭代与位错误之间的关系图。 可配置的训练参数,包括学习率、迭代次数等。 提供了模型保存和恢复的机制,便于训练中断后继续训练或在不同任务间迁移模型。 ## 安装与运行 ### 环境依赖 Python 3.x
# 基于Arduino的环境监测系统 ## 项目简介 本项目是一个基于Arduino的环境监测系统,主要用于收集并保存环境数据,如温度、湿度、降雨量、气体值和风速等。通过使用Arduino平台和多种传感器,实现数据的实时采集、处理和存储。 ## 项目的主要特性和功能 1. 数据采集通过Arduino板连接多种环境传感器,实时采集环境数据。 2. 数据处理对采集的数据进行本地处理,如温度湿度的转换等。 3. 数据存储将处理后的数据保存到SD卡或其他存储设备中,以便于后续分析。 4. 数据传输通过串行通信或无线通信模块将数据发送到计算机或其他设备。 ## 安装使用步骤 1. 硬件准备准备Arduino板、环境传感器(如DHT温湿度传感器)、SD卡模块等硬件。 2. 软件准备安装Arduino IDE,并下载项目代码。 3. 传感器连接将传感器连接到Arduino板的相应引脚。 4. 代码上传将项目代码上传到Arduino板。
内容概要:本文详细介绍了100kw模块式三相光伏并网逆变器的整体设计方案,涵盖功率接口板、主控DSP板、驱动扩展板及其逆变器并联仿真的各个方面。首先,文章阐述了功率接口板的原理图和PCB设计,解释了各个元件的作用及其选择依据。接着,重点讲解了主控DSP板的原理图、元器件明细表及核心代码,特别是PID控制算法的应用。然后,探讨了驱动扩展板的设计要点,包括驱动芯片的选择和PCB布局技巧。最后,分析了逆变器并联仿真文件,讨论了环流抑制算法及其效果。 适合人群:具备一定电子工程和嵌入式系统基础知识的专业人士,尤其是从事光伏逆变器及相关电力电子设备的研发工程师和技术爱好者。 使用场景及目标:①帮助读者深入了解100kw模块式三相光伏并网逆变器的工作原理和设计思路;②为实际项目开发提供详尽的技术参考资料,包括原理图、PCB设计、源码及元器件选择;③通过实例代码和仿真分析,提升读者解决复杂控制系统问题的能力。 其他说明:文中不仅提供了理论知识,还分享了许多实际设计中的经验和技巧,如PCB布线注意事项、元件选型标准、代码优化方法等,有助于读者更好地理解和应用所学内容。
# 基于Python和OpenAI的微信智能聊天机器人 ## 项目简介 本项目是一个基于Python和OpenAI的微信智能聊天机器人,能够将微信打造成一个智能对话平台。通过集成OpenAI的ChatGPT模型,机器人可以进行智能对话,支持多轮会话上下文记忆、语音识别、图片生成等功能。此外,项目还支持多种插件扩展,如多角色切换、文字冒险游戏、敏感词过滤等,极大地丰富了用户的互动体验。 ## 主要特性和功能 多端部署支持个人微信、微信公众号和企业微信应用等多种部署方式。 智能对话支持私聊及群聊的智能回复,支持多轮会话上下文记忆,支持GPT3、GPT3.5、GPT4模型。 语音识别支持语音消息的识别与回复,支持Azure、Baidu、Google、OpenAI等多种语音模型。 图片生成支持图片生成和图生图功能,支持DALLE、Stable Diffusion、Replicate等模型。
微信小程序图表组件源码简介 这份资源是精心整理的微信小程序图表组件源码包,涵盖了柱状图、折线图、饼图、雷达图等多种常见且实用的图表类型。在当今数据可视化盛行的时代,无论是商业数据分析、项目进度展示,还是日常信息统计,这些图表都起着关键作用。 对于微信小程序开发者而言,这无疑是一份极具价值的学习宝藏。它提供了现成的图表实现代码,能帮助开发者深入理解不同图表在小程序中的构建逻辑与交互方式,快速掌握如何将数据以直观的图表形式呈现给用户,从而提升小程序的用户体验与功能性。通过研究这些源码,开发者可以学习到图表绘制的技巧、数据处理的方法以及与小程序其他组件协同工作的方式,为开发更复杂、更专业的小程序应用奠定坚实基础,加速开发进程,少走弯路,进而打造出功能完备、界面美观且数据展示清晰的优质小程序产品,满足用户多样化的数据可视化需求。总之,这是一份不可多得的学习资源,助力开发者在微信小程序开发领域不断进步。
《幼儿园招生报名小程序源码简介》 本资源是一份极具实用价值的幼儿园招生报名小程序源码。它为幼儿园的招生工作提供了高效便捷的解决方案,同时也方便家长进行报名操作。 在功能方面,幼儿家长能够通过该小程序填写丰富的信息,涵盖幼儿的基本信息、住址信息以及监护人信息等各类必要资料,且这些资料可根据实际需求进行灵活的自定义设置,满足不同幼儿园的个性化要求。园方人员则拥有强大的管理权限,可依据家长提交的资料进行预先审核,若发现资料不完善或存在问题,能及时提示用户修改,确保信息的准确性和完整性。此外,园方还能方便地查看所有报名名单,并支持将名单导出,便于后续的整理和统计工作。 需要强调的是,此资源仅为学习资源,旨在帮助开发者学习和研究相关技术,不应用于商业用途。