1、查找功能。
flashpaper默认模板DefaultViewer2.swf反编译、修改后,重新生成swf,查找功能失效。
需要在mainview.as中function findNext()里var _loc2 = this.getFindText();后面添一句
_loc2 = _loc2.substring(0, _loc2.length - 1);否则,传过来的值不正确。原因不明。
2、超长查找内容,找不到后提示功能不正常。原版就是这样。
需要将mainview.as中function findNext()里if (!found){...}修改为:
if (!found)
{
var dot = "";
var _loc1 = this.getLanguageObject().NOT_FOUND;
var _loc3 = _loc1.indexOf("%");
var _loc4 = "";
if (_loc3 != -1)
{
for(;;)
{
_loc4 = _loc1.substring(0, _loc3) + _loc2 + dot + _loc1.substring(_loc3 + 1, _loc1.length);
if (this.showMessage(_loc4, this.m_mainMC.toolbar_mc.controls_mc.find_mc)){break;}
if (_loc2.length == 0){break;}
this.showMessage("", null);
_loc2 = _loc2.substring(0, _loc2.length - 1);
dot = "...";
};
} // end if
}
3、页面后退按钮功能不正常,在部分页面向前退页时会出现跳页。原版就是这样。
将DocumentView.as中function getScrolledPage(middle)函数里的
_loc3 = Math.round(_loc3 / _loc2.m_mainView.getCurrentScaleFraction());
改为:
_loc3 = Math.round((_loc3+2) / _loc2.m_mainView.getCurrentScaleFraction());
这个函数没读懂,+2 是猜测的。暂时能用,不知道有没有其他不良影响。
4、增加全屏阅读功能。
将左上角adobe标志的按钮、图片删除,添加一个按钮fullscreen1
动作代码:
on (release)
{
Object(this).fullscreen1._visible=false;
Object(this).fullscreen2._visible=true;
Stage["displayState"] = "fullScreen";
}
再添加一个按钮fullscreen2,和1重叠
动作代码:
on (release)
{
Object(this).fullscreen2._visible=false;
Object(this).fullscreen1._visible=true;
Stage["displayState"] = "normal";
}
在主stage第三个帧的语句后添加:
var myListener:Object = new Object();
myListener.onFullScreen = function(bFull:Boolean)
{
if(bFull == false)
{
_root.toolbar_mc.fullscreen2._visible=false;
_root.toolbar_mc.fullscreen1._visible=true;
}
}
Stage.addListener(myListener);
最后,再使用他的网页中写入swf的地方加上参数 allowFullScreen="true" 即可。
此参数可能和 wmode="transparent" 有冲突,使用时注意
5、屏蔽打印等功能。
在主stage第三个帧的语句后添加:
gMainView.showUIElement("Print", false);
gMainView.showUIElement("Pop", false);
//gMainView.showUIElement("Tool", false);
//gMainView.showUIElement("Overflow", false);
在网页中使用flashpaper后,发现了几个新问题:
1、因ie6中swf不能自动激活,使用swfobject、writeflash等外部js文件写入swf可以自动激活,但是swf的全屏功能无效。网上没找到解决办法,只好暂时不管swf的自动激活了。
2、很多种浏览器不能让swf活动焦点。上网一查,原来使用 wmode="transparent" 后,有的浏览器中swf不能获得焦点。
还有,wmode="transparent" 使大部分浏览器中的swf不能输入中文(ime输入法),输入后这接在网页上显示出来了。早有的bug,adobe一直没改。
3、即便不用 wmode="transparent", chorme、opera等浏览器也不能用focus使swf自动获得焦点,非要点击swf后才能。没搜到解决办法