- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我在舞台上有一个影片剪辑。每次单击此影片剪辑时,我希望它改变颜色,但如果再次单击,我希望它重新着色(再次变为白色)。更清楚地说,它一开始是白色的,第一次单击时我希望它变成黄色,第二次单击时再次变为白色,第三次单击时再次变为黄色,依此类推。
我刚刚编写了第一次点击的代码,但我不知道如何完成其余的操作。
var myColorTransform:ColorTransform=transform.colorTransform;
half1a.addEventListener(MouseEvent.CLICK, changeColour);
function changeColour(event:MouseEvent):void
{
myColorTransform.color = 0xD5E40D;
half1a.transform.colorTransform=myColorTransform;
addChild(half_number1a);
}
最佳答案
或者,如果您不太喜欢打字:
var myColorTransform:ColorTransform=transform.colorTransform;
half1a.addEventListener(MouseEvent.CLICK, changeColour);
var cc:uint = 0; //current color.
var cl:Array = [0xFFFFFF, 0xD5E40D]; //list of all colors.
function changeColour(event:MouseEvent):void
{
myColorTransform.color = cl[cc = (++cc < cl.length)? cc : 0];
half1a.transform.colorTransform=myColorTransform;
addChild(half_number1a);
}
在我看到评论后,我意识到这可能会让经验不足的程序员感到困惑,我们想在这里互相教导,不要为别人做工作。
那么这里发生了什么?
基本设置
我们声明了一些带有颜色的数组,我们希望用它来循环我们的影片剪辑(通过?)。
var cl:Array = [0xFFFFFF, 0xD5E40D]; //list of all colors.
不,我们想知道现在显示哪种颜色,因此我们声明另一个变量来存储当前颜色的索引。
var cc:uint = 0; //current color.
如果您已经感到困惑,请参阅 Working with arrays
基本上(当前值为 0
)我们将访问数组的第一项 0xFFFFFF
通过这个:
cl[cc];
目标
现在,每次单击影片剪辑时,我们所需要做的就是移动索引,使其指向数组中的下一个项目(颜色)。我们可以像这样简单地增加当前颜色的值
myColorTransform.color = cl[++cc];
请注意 x++
之间的区别和++x
。 Adobe 有很棒的 example这有何不同。
它会起作用,但只有到我们到达数组末尾为止(显然我们不想再增加索引,我们希望它返回到 0
)剩下的就是这样做 - 将索引设置为 0
;
如果你不知道这有什么奇怪的()?:;
语法意思。您可能想检查这个 this出来 - 只是 if...else
缩写,但您最好将其视为返回某些值的函数。
所以在特殊情况下cc = (++cc < cl.length)? cc : 0
相当于写这样的东西:
cc = nextIndex();
function nextIndex() {
if (++cc < cl.length) return cc;
else return 0; //else is redundant here - if "if" is ture then function will return "cc" and no other instruction are executed in this function.
}
摘要
总结一下myColorTransform.color = cl[cc = (++cc < cl.length)? cc : 0];
线确实是。
检查新索引是否小于颜色列表的长度。
如果为 true,则设置 cc
至cc
(保持原样)
否则,设置cc
返回0
从颜色列表中选取颜色值 cl
在[]
内评估的指数.
myColorTransform.color
到选取的值。回答其他问题。
从我们刚刚结束的cc
开始value 存储新颜色的索引,因此您可以简单地使用它来访问 cl
再次无需重做这些疯狂的事情。例如,如果您只想拥有一个 mc,则可以仅使用可见属性:
function changeColour(event:MouseEvent):void
{
myColorTransform.color = cl[cc = (++cc < cl.length) ? cc : 0];
half1a.transform.colorTransform = myColorTransform;
half_number1a.visible = cl[cc] == 0xFFFFFF; //check if current color is white and set it's visible state accordingly
}
请注意,如果按钮未添加到舞台拳头,即使将可见属性设置为true
,您也不会看到它。 .
更灵活的解决方案
或者另一种方法是创建并行或多维数组。在这样的简单场景中,并行阵列应该是更好的选择,因为它更容易跟踪,并且您不需要更改已有的任何内容。基本上,这个想法是创建另一个数组,其中每个值(在您的情况下,影片剪辑与同一索引处的颜色值伴随:
var cl:Array = [0xFFFFFF, 0xD5E40D]; //list of all colors.
var ml:Array = [half_number1a, null ]; //movie clips list.
所以,如果你有这样的东西,现在你的changeColor
函数看起来像这样:
function changeColour(event:MouseEvent):void
{
myColorTransform.color = cl[cc = (++cc < cl.length) ? cc : 0];
half1a.transform.colorTransform = myColorTransform;
if (ml[cc]) addChild(ml[cc]); //add child if exist.
if (ml[cc - 1]) removeChild(ml[cc - 1]); //remove previous child if exist.
}
就是这样。请记住,在调用 removeChild()
之前,您需要将影片剪辑放在舞台上。
此设置的好处是,您只需将新值推送到数组即可添加任意数量的颜色和影片剪辑:)
关于actionscript-3 - 如何切换影片剪辑的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42602413/
我们有一个使用 Flex 和 CS3 构建的 Flash 网站。该网站的大部分内容都是使用 Flex 完成的。我们的页面上有多个 Flash 影片,显然页面加载速度非常慢。现在我们正在研究提高页面速度
Adobe 的这个页面说要添加一个“wmode”参数并将其值设置为“透明”:http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_1
我想从内存流或字节数组而不是磁盘上的文件加载 SWF 对象。 AxShockwaveFlash 类提供了加载 SWF 的方法和属性,以字符串形式提供其磁盘路径,但我还没有看到另一种方法。有一个 Inl
我一直在寻找这个。我需要构建一个独立的实用程序,该实用程序应该: 将图像序列转换为 .mov 格式 获取用户的输入并将其显示在 mov 中。 我计划使用 Java 来完成此操作,因为这是一种跨平台语言
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭去年。 Improve this
我可以通过 axShockwaveFlash 对象将 swf 文件加载到我的 C# 程序中,但我必须通过单击用户按钮来关闭它。我尝试了以下所有可能性的代码,但都没有奏效。 axShockwaveFla
我正在使用 Xcode 创建 Objective-C、cocoa、mac 应用程序。我有一个 QuickTime Movie View,其中上传了一部影片。当我按运行时,它不起作用,窗口不显示,我的电
我正在使用 ColdFusion,需要从服务器上存储的 Flash 影片生成缩略图。我听说过 ffMpeg 但不知道如何使用它。 (一旦你把它放在你的服务器上,下一步是什么?) 最佳答案 您可以使用c
我有一个 Flex 影片,其中包含一个文本输入框和一个(可选)下拉列表。该设计要求此下拉列表位于电影的下边缘下方,与下方的 HTML 重叠。 我可以将 wmode 设置为透明,并且可以让下拉菜单与 H
我正在尝试将一段音频从一部 QuickTime 电影复制到另一部,但没有成功;音频似乎没有被复制。 C++基本代码: // Copy from another QT movie, *src, to t
我正在尝试创建一个特定于站点的浏览器应用程序。我创建了一个新的 Cocoa 应用程序,将 WebView 添加到我的窗口,然后加载页面。该页面包含一个Flash影片,可以通过键盘控制。我想连接一些菜单
我花了一些时间才弄清楚如何将 QuickTime 播放器嵌入到 C# 应用程序中。当我对我的成功感到非常高兴时,规范更改为我们的播放器具有自定义控件(而不是来自 Apple QuickTime Con
我有一个 Flash 影片(简单的视频播放器),嵌套在 DIV 中,它本身嵌套在 jQueryUI-Draggable DIV 中。因此flash-object 的 CSS 框的东西被重建。然后你就
我正在制作一个动态横幅系统,可以处理 img 横幅,以及使用对象/嵌入完成的 Flash 横幅。整个网站大量使用了 jQuery,包括处理“点击”事件。 当涉及到跟踪图像本身的点击时,这显然不是问题(
我正在尝试将 QuickTime 影片 View 对象添加到我的应用程序中,但在界面生成器的对象库中找不到它。我将 QTKit 框架添加到我的项目中,并使用 XCode 5 和 10.8 作为目标。我
我试图让我的 iPhone 应用程序除了 HTTP 之外还可以使用 HTTPS,但使用 UIWebView 或 MPMoviePlayerController 来查看 Quicktime MOV 文件
我是一名优秀的程序员,十分优秀!