DFdou's Blog Life is short,Be yourself.

211/095

Flash-线条无法遮罩的问题

今天和个网友在讨论Flash遮罩的时候,发现"线条"无法显示遮罩的问题,具体表现为把"线条"作为遮罩层后会无法显示遮罩内容。
不知道这个是不是应该算是BUG,Flash CS3版的F1里是这么说的:

遮罩项目可以是填充的形状、文字对象、图形元件的实例或影片剪辑。

里边也米有提到"线条",这么说本来"线条"就不能作为遮罩的?
那如何解决这个问题呢,G了下,发现下边2种解决方案:
1.把"线条"转换成"形状",做法是这样的,修改(菜单)->形状->将线条转为填充,然后就可以遮罩了。
2.代码法。把需要遮罩的"线条"转成元件,明明为mc_line之类的,把遮罩命名成mask_block之类的,然后写个mc_line.mask=mask_block就可以了,如果是as2的,那么应该是mc_line.setMask(mask_block)。

1607/090

AS2-System.capabilities

先来个Demo看下System.capabilities到底是干嘛用的:

307/091

HTML5 The Terminater Of Flash?

HTML5 The Terminater Of Flash? No,no~
以下内容来自RIA周刊第十五期[2009-6-22]的《为什么说HTML5不是Flash的终结者》
这里有个原文链接:http://www.jadbox.com/2009/06/why-html-5-is-not-a-flash-killer/
RIA周刊的翻译内容:

在作者看来,HTML5定义的新特性,需要很长的时间来实施。画布绘图和视频播放的功能,应该在10年前就已经开始实施了,如果W3C动作再快一点,我们现在可能已经在使用HTML9了。值得注意的一点是,Flash或任何其它的富媒体插件都不会受到HTML5的威胁,视频播放和简单的画布支持只是Flash开发中的很小一部分。

人们有一个很大的误解,就是认为之所以在网页上使用Flash技术很大一部分原因是为了播放视频。甚至认为正是由于视频播放技术才使Flash生存至今(包括数字加密,动态缓冲,视频控制),并与其它技术相区别。现在看起来好像宣传HTML5的大都是HTML开发人员,似乎他们不喜欢Flash,当然作者本人没有指责任何人的意思,只是“HTML5将干掉 Flash,Silverlight,Unity3D,O3D,或者任何其它的富媒体插件”这个说法,很明显忽略了一个事实,即:这些工具实际上已经创建了很多大型的应用,游戏,3D多媒体开发。或许你会说有人会基于Canvas写一个3D引擎,但是它的速度将难以抗衡浏览器插件,而且难以使用硬件加速。

作者想说的是,应该使用正确的工具做正确的事情。Silverlight是一个多媒体工具,用于和.NET协作开发;Flash是一个多媒体工具,适用于非编程人员和Java类别的开发人员。HTML是一个伟大的网页标记语言,适合介绍内容。使用不合适的工具达到目的是滥用平台。挑选最合适的工具才是对项目最重要的。

原来大家一直觉得HTML5将是Flash,SL的终结者,主要原因是HTML5内置了Canvas和视频播放器标签。而文中主要是以这2点出发,分析Flash并不仅仅是因为视频播放技术才得以生存至今(比如有AIR~)。
的确,Flash目前的使用领域已经非常之大,并且呢,使用HTML5内置的Canvas开发应该需要复杂的JS支持。
看目前的样子,应该是HTML5,Flash,SL,etc共存的局面。
PS:话说W3C的东西也太慢了吧,搞了那么多年了都?

2606/090

Adobe开发者技术日 7月16上海

adobechinadeveloper

http://www.adobechinadeveloper.com/developerday/Shanghai

尊敬的开发伙伴:
我们诚挚地邀请您参加将于2009年7月16日在上海举行的 奥多比开发者技术日 !
奥多比开发者技术日 是由奥多比公司举办的面向 Flash 平台应用及Web应用开发者的技术研讨培训活动。旨在为开发者介绍和讲解有关 Adobe Flash 平台技术及其应用开发的相关知识和开发技巧,以及 Adobe Flash 平台技术的发展趋势等。同时也为开发者搭建一个互相学习和交流的平台,在此与奥多比公司的技术专家和资深的开发者们分享各自的开发经验和创新设计理念,共同推动 RIA 技术的发展。
光临此次开发者技术日,您将在第一时间聆听最新发布的 Adobe Flash Builder 4 和 Adobe Flash Catalyst 的新功能和新特性,欣赏炫酷的应用演示,还有机会获得Adobe Flash平台应用开发工具光盘和热销的中文版开发工具书。还等什么?赶快注册吧!* 座位有限,先来先得!

2406/090

Flash-Adobe’s Flash to ship on new Android phone

The HTC Hero phone will have Flash support built in.(Credit: HTC)

Learned from http://news.cnet.com/8301-1035_3-10272261-94.html?part=rss&subj=news&tag=2547-1_3-0-20.

Marking a departure from the world of iPhone, HTC's new Android-based Hero phone will also come with the ability to handle Flash elements that adorn many Web sites and power YouTube video.

HTC新款Android系统手机Hero将内建Adobe Flash播放器。

Adobe Systems announced on Wednesday that its Flash Player will be built into the HTC phone, an important step in the company's efforts to spread Flash to mobile phones. The phone, one of several from HTC to use Google's open-source operating system, is scheduled to ship in Europe starting in July and in Asia and North America later in the year.

Adobe在周三发布了一个公告称Flash Player将内建在HTC手机中,这是Flash迈向手机平台关键性的一步。Hero是HTC使用Google的开源操作系统的其中一款手机,将在7月登录欧洲,并在晚些时候登录亚洲和北美。

1806/090

Flash-Transparent时在FF和Safari下无法输入中文的解决方案

Learned from 《swfInputs: Solving Mozilla + Transparent Mode + Win + Special Chars within inputs》
原来写过个日志《Flash在Safari下无法输入中文》,当时没有找到好的解决方案,现在在网上看到有这么个东西,swfInputs
What to do in your code?具体代码的使用:
swfInputs consists of two parts(swfInputs包含2个部分):
* The SWFTextInput AS3 Class (which create the connection to the JavaScript class),一个AS3组件,负责Flash和JS的通信。
* and the swfInputs JavaScript Class (which handles the creation and HTML communication),一个JS文件,负责在HTML端建立Input。
To activate the JavaScript part you just need to insert two script-tags into the HTML code and call the constructor method. At the moment swfInputs uses the dojoToolkit JavaScript library for position calculation and basic connection handling. I looking forward to remove this need of dojo to reduce the filesize.
swfInputs使用dojoToolkit JS框架,恩,作者根据需求修正了dojoToolkit的尺寸。

<script src="../javascript/dojo.js" language="javascript"></script>
<script src="../javascript/swfInputs.js" language="javascript"></script>
<script language="JavaScript" type="text/javascript">
			swfInputs.init('swfInputTestcase');
</script>
2805/090

AAS3WDP-Chapter 8 Composite 组合模式(下)

接上集《AAS3WDP-Chapter 8 Composite 组合模式(上)》,上集讲到了建立叶子元素和组合元素,这集先讲xml文件:

< ?xml version="1.0" encoding="utf-8"?>
<filesystem>
	<filesystemitem type="Directory" name="Program Files" bytes="1024">
		</filesystemitem><filesystemitem type="Directory" name="Adobe Flash">
			<filesystemitem type="File" name="Flash.exe"/>
			<filesystemitem type="File" name="Hello.txt"/>
			<filesystemitem type="File" name="Today.txt"/>
		</filesystemitem>

	<filesystemitem type="Directory" name="Other" bytes="1024">
		<filesystemitem type="File" name="Hello.txt"/>
		<filesystemitem type="File" name="Image.jpg"/>
	</filesystemitem>
</filesystem>

xml里,文件分2个目录,Program Files和Other,Program Files目录下有子目录Adobe Flash,子目录Adobe Flash中有3个文件,而Other下有2个子文件,下边我们就用这个xml来模拟一个文件结构目录。

2705/090

AAS3WDP-Chapter 8 Composite 组合模式(上)

啊,这一贴比较麻烦,内容也比较多,所以准备分上下部分来完成。
那么,什么是组合模式呢?
组合模式是将对象之间的关系以数据结构中的2叉树表现出来,使得客户端将单纯的元素与复杂元素同等看待,这样的话使得用户在操作不同的子类元素时可以和根节点元素一样操作,在透明模式下即根元素和叶元素公用同一个接口达到共同的结果。组合模式就是解决部分与整体的关系的一种模式。
这一章是以文件系统为例,文件分为"文件夹"和"文件"两种,恩,就是这样。那么我们先来建立一个共用接口IFileSystemItem:

package{
	import IIterator;//PS:第7章的类
	public interface IFileSystemItem{
		function iterator():IIterator;
		function addItem(item:IFileSystemItem):void;
		function removeItem(item:IFileSystemItem):void;
		function getName():String;
		function setName(name:String):void;
		function getParent():IFileSystemItem;
		function setParent(parent:IFileSystemItem):void;
	}
}
2205/090

About Flash

今天在CSDN看到个题为《Adobe宣布Flex Builder将更名为Flash Builder》的东西,这个怎么说呢,什么是Flex,然后,什么是Flash?
其实一开始推出个Flex估计Adobe是想让她和Flash区分开来,而后来呢,Flash的定义被更改了,,于是现在又绕了回来,改成了Flash Builder~不过SDK依然是叫Flex SDK哈哈…纠结吧?ORZ。
那到底Flash是什么东西呢?如果你的想法还停留在Flash动画的年代,那赶紧更新下,不然就OUT了,,。
想看详细信息的可以点此下载官方的PDF《ADOBE® FLASH® 平台》

3004/090

Flash-关于AS和强制类型转换

内容来自Actionscript3.cn
Now,let's begin,what's the differenct between "objectA as BaseClass" and "BaseClass(objectA)"?
This answer from comment 6#:

objectA as BaseClass:
如果一个物件(objectA)属于一种型别(BaseClass),那么返回这个物件,否则返回Null.
if objectA is a type of BaseClass,then return objectA,else return Null.

BaseClass(objectA)为强制转换:
如果一个物件(objectA)属于一种型别(BaseClass),那么返回这个物件,否则报错.
if objectA is a type of BaseClass,then return objectA,else throw an error.

example:
var objectA:MovieClip = new MovieClip();
trace(objectA as MovieClip);//输出:[object MovieClip]
trace(objectA as Shape);//输出: null
trace(MovieClip(objectA));//输出:[object MovieClip]
trace(Shape(objectA));//输出:TypeError: Error #1034: 强制转型失败
Tagged as: , No Comments
1204/090

Flash-关于按键检测功能中有些键无法检测到的问题

在做Flash按键侦听的时候,也许大家会碰到这样一个情况:有些按键按了之后Flash Player木有反应,造成这个情况的可能原因是“你是在Flash IDE里测试的”。
那么为什么在Flash IDE里测试就会有问题呢?那是因为,Flash IDE有快捷键,而如果你在IDE中按快捷键测试的话,Flash Player是会屏蔽掉的的!
那怎么测试?直接双击SWF打开测试,而不要在IDE中测试。
来段代码:

stage.addEventListener(KeyboardEvent.KEY_DOWN,traceKey);
public function traceKey(e:KeyboardEvent) {
   trace(e.keyCode);
}
Tagged as: , No Comments
804/090

AS2-MC的循环滚动实现

Demo:


Source Code:

var startY:Number = 110;//起始y位置
var speed:Number = 0.5;//滚动速度
var mcHeight:Number = 88.5;//mc的高度
initItemMove (startY, speed, mcHeight);
function initItemMove (startY:Number, speed:Number, mcHeight:Number) {
	mc1.onEnterFrame = function () {
		this._y -= speed;
		if (this._y < startY - mcHeight - 10) {
			this._y = mc2._y + mcHeight;
		}
	};
	mc2.onEnterFrame = function () {
		this._y -= speed;
		if (this._y < startY - mcHeight - 10) {
			this._y = mc1._y + mcHeight;
		}
	};
}

循环滚动的原理很简单,就是生成2份一样的东西,例子里为mc1和mc2,然后并接排列一起往上移动,在mc1上移一定距离后(例子里为startY - mcHeight - 10),就让mc1移动到mc2的底部,如此循环,就可以实现mc的循环滚动了。
Flash中灰色部分是遮罩,为了方便看效果,左边的没做遮罩,右边的做了遮罩。

Tagged as: , No Comments
704/090

AS2-StarRate

Demo:


Source Code:

import gs.TweenLite;
var STARNUM:Number = 26;
//星总数
var STARWIDTH:Number = 20;
//星宽度
var starRateNum:Number = 10;
//默认星数
initStars ();
function initStars () {
	this.createEmptyMovieClip ("mc_star", 0);
	mc_star.createEmptyMovieClip ("mc_starG", 1);
	mc_star.createEmptyMovieClip ("mc_starL", 2);
	attachMovie ("hitArea", "starMask", 3);
	mc_star._x = mc_star._y = 15;
	starMask._x = mc_star._x;
	starMask._y = mc_star._y;
	starMask._width = starRateNum * STARWIDTH;
	mc_star.mc_starL.setMask (starMask);
	for (var i:Number = 0; i < STARNUM; i++) {
		//灰色星mc
		mc_star.mc_starG.attachMovie ("starG", "starG" + i, 10 + i);
		//高亮星mc
		mc_star.createEmptyMovieClip ("mc_starL", 2);
		mc_star.mc_starG["starG" + i]._x = mc_star.mc_starL["starL" + i]._x = STARWIDTH * i;
		mc_star.mc_starG["starG" + i].onRelease = function () {
			var btnName = this._name.substr (5);
			trace (btnName);
			btnName = int (btnName) + 1;
			trace (btnName);
			TweenLite.to (starMask, 0.3, {_width:STARWIDTH * btnName});
		};
	}
}
Tagged as: , , No Comments
104/090

Flash-CSS,StyleSheet

内容来自Flash帮助文档,F1搜索StyleSheet。
Demo:


AS代码:

import TextField.StyleSheet;
Stage.align="TL";
Stage.scaleMode="noScale";
// 创建新样式表对象
var style_sheet = new StyleSheet();
// 定义样式的 CSS 文件的位置
var css_url = "http://nwhy.org/nwhy/exp/flash-css.css";
// 创建一些要显示的 HTML 文本
var storyText:String = "_str,因为代码插件会转换这段文字…SO,另外提出来放到后边了";
// 加载 CSS 文件并定义 onLoad 处理函数:
style_sheet.load(css_url);
style_sheet.onLoad = function(ok) {
  if (ok) {
    // 如果样式表加载没有错误,
    // 则将其分配到文本对象,
    // 然后将 HTML 文本分配到文本字段。
    news_txt.styleSheet = style_sheet;
    news_txt.text = storyText;
  }
};

_str那边的内容,就是HTML代码,注意在放入Flash的时候单引双引的转换:

<p class='headline'>Flash-CSS (.headline)</p><img src='http://www.google.cn/intl/zh-CN/images/logo_cn.gif'/><p>使用 StyleSheet 类可以创建包含文本格式设置规则<span class='byline'>(例如,字体大小、颜色和其它格式样式)</span>的 StyleSheet 对象。然后,可以将样式表定义的样式应用到包含 HTML 或 XML 格式文本的 TextField 对象。根据 StyleSheet 对象定义的标签样式自动设置 TextField 对象中文本的格式。可以使用文本样式来定义新的格式标签,重新定义内置的 HTML 标签,或创建可应用到某些 HTML 标签的样式类。<br /><a href='http://nwhy.org'>这是一个链接文本</a></p>

接这是CSS文件:

p {
  color: #000000;
  font-family:Arial,Helvetica,sans-serif;
  font-size:12px;
  display:inline;
}
a:link {
  color:#FF0000;
}
a:hover{
  text-decoration:underline;
}
.headline {
  color: #000000;
  font-family:Arial,Helvetica,sans-serif;
  font-size:18px;
  font-weight:bold;
  display:block;
}
.byline {
  color: #666600;
  font-style:italic;
  font-weight:bold;
  display:inline;
}

Flash8和Flash CS3支持的CSS只有以下几个:
color,display,font-family,font-size,font-style,font-weight,kerning,letter-spacing,margin-left,margin-right,text-align,text-decoration,text-indent
Flex支持的CSS版本似乎是1.5,而不是流行的2.0……

3103/090

Flash-ENTER_FRAME,Timer,setInterval,setTimeout AND frameRate

ENTER_FRAME跟帧频直接相关,而Timer和setInterval,setTimeout则和帧频完全木有关系,另外,Flash CS3帮助文档中推荐使用Timer而不要再使用setInterval,setTimeout,setInterval可以用Timer直接代替,而setTimeout可以用Timer(xxx,1)代替。
用于测试的代码如下,PS:Flash帧频设置为1。

//ENTER_FRAME 每秒输出一个enterframe
btn_e.addEventListener (MouseEvent.CLICK,showEnterframe);
function showEnterframe (_vet:MouseEvent) {
	stage.addEventListener (Event.ENTER_FRAME,enterframe);
	function enterframe (_evt:Event) {
		trace ("enterframe");
	}
}

//Timer 每10毫秒输出一个timer
btn_t.addEventListener (MouseEvent.CLICK,showTimer);
function showTimer (_vet:MouseEvent) {
	var t:Timer=new Timer(10);
	t.addEventListener (TimerEvent.TIMER,timer);
	t.start ();
	function timer (_evt:TimerEvent) {
		trace ("timer");
	}
}
//setInterval
btn_i.addEventListener (MouseEvent.CLICK,showInterval);
function showInterval (_vet:MouseEvent) {
	var i=setInterval(showI,1000);
	function showI () {
		trace ("setInterval");
	}
}

Flash里帧频的极限是0.01-120,如果设置超过了,Flash Player将使用它能达到的最大帧频或者最小帧频运行。
Flash中无法达到很精确的时间,因为这跟运行Flash的硬件有很大的关系。

Page 1 of 512345