Flash CS4不允许我将swf保存到png序列.有没有办法将movieclip保存为swf并使用外部程序转换为png?
谢谢!
removeMovieClip()
在AS3中相当于什么?
显然很多人都有同样的问题:
StackOverflow:
其他:
但对我来说,他们的解决方案似乎都不起作用:
我正在使用AS3处理闪存CS4:
我有一个非常简单的电影,只有一个叫做click的按钮.按下按钮,会创建一个新的硬币实例:
this.click.addEventListener(MouseEvent.CLICK,justclick);
function justclick(e:MouseEvent){
var money=new coin
this.addChild(money)
money.x=e.stageX
money.y=e.stageY
}
Run Code Online (Sandbox Code Playgroud)
它可能不是最好的代码,但它工作正常.现在,硬币MovieClip应该显示一个小动画并自行删除.在旧的AS2中我会添加:
this.removeMovieClip()
Run Code Online (Sandbox Code Playgroud)
在动画的最后一帧.但这在AS3中并不存在.
我试过了,没有成功:
this.parent.removeChild(this) // 'Cannot access a property or method of nullobject reference'...
this.removeMovieClip() // 'removeMovieClip is not a function'
removeMovieClip(this) //'call to possibly undefined method removeMovieClip'
unloadMovie(this)//'call to possibly undefined method removeMovieClip'
Run Code Online (Sandbox Code Playgroud)
解决方案?
谢谢,
我有一个怪物的场景.怪物眨了眨眼睛.眨眼是一个单独的MovieClip.在某些情况下,怪物张开嘴.嘴巴开放也是一个单独的MovieClip.此刻我不得不隐藏EyeClip的眼睛.一旦怪物闭上嘴,我必须让眼睛再次闪烁.
我的想法是让一些听众听Mouth_opening MovieClip.当嘴开口的当前帧从1变为2时,我会隐藏眼睛.当它从2变为1时,我会将其显示出来.
所以,问题是:我如何收听currentFrame的变化?Event.ENTER_FRAME不合适:它被调用每个渲染帧,而不仅仅是当currentFrame更改时.
我是一个新手,我已经在这个问题上进行了数周的训练,并且我无法掌握这一点.下面的简单代码给出了"提供的DisplayObject必须是调用者的子代"错误.
var square = new squareObj;
addChild(square);
addEventListener(Event.ENTER_FRAME, removeSquare);
function removeSquare(evt:Event):void {
removeChild(square)
}
Run Code Online (Sandbox Code Playgroud)
squareObj是库中的一个movieclip,它是为AS导出的.如何更改此代码以使其正常工作?我想这是我对正确的oop的了解,我缺乏,所以任何关于这个问题的良好教程的链接都表示赞赏.
问候H.
这有效:
var a:BitmapData = new BitmapData(640,480);
var b:Bitmap = new Bitmap(a);
a.draw(movieClip);
Run Code Online (Sandbox Code Playgroud)
这不起作用:
movieClip.mask = movieClipMask;
var a:BitmapData = new BitmapData(640,480);
var b:Bitmap = new Bitmap(a);
a.draw(movieClip);
Run Code Online (Sandbox Code Playgroud)
如何只将MovieClip的可见部分(使用遮罩)绘制到我的位图中?
耶,另一个简单的noobie as3问题.
如何通过".name"引用动画片段?
我试着寻找解决方案,但我找不到任何东西.基本上我有一组使用循环添加到舞台上的动画片段,所以我发现它们区分它们的方式是给它们一个.name"of something"+ Loop的"i".所以现在它们被命名为"something1","something2","something3"等等.
现在,我需要发送一些特定的帧.通常我会这样做:
something1.gotoAndStop(2);
Run Code Online (Sandbox Code Playgroud)
但"something1"不是实例名称,只是".name".我找不到引用它的方法.
我在Library中有很少的MovieClip,我想制作将它们加载到舞台中的功能.我的问题是我找不到与为每个MovieClip制作单独的函数不同的解决方案.我正在寻找类似的东西:
function addAnyClip(name){
//create new object 'name'
stage.addChild(chosenObject);
rest of code
}
Run Code Online (Sandbox Code Playgroud)
因为它比以下更好:
function addClip1(){
var mc1:Clip1 = new Clip1;
stage.addChild(mc1);
///rest of code
}
function addClip2(){
var mc1:Clip2 = new Clip2;
stage.addChild(mc2);
///rest of code
}
function addClip3(){
var mc1:Clip3 = new Clip3;
stage.addChild(mc3);
///rest of code
}
...
Run Code Online (Sandbox Code Playgroud) 有没有人试图获取Flash 8,AS 2中指定停止(和当前)帧的舞台上所有动画片段(甚至是嵌套片段)的列表?
我做了以下事情:
for(i in _root){
if(typeof(_root[i])=="movieclip"){
trace(_root[i]);}
}
Run Code Online (Sandbox Code Playgroud)
但这对于第一级搜索是有利的:也就是说,如果在影片剪辑中你有其他影片剪辑,则无法覆盖它们.此外,在动画片段中可以有多个动画片段.
有没有人试图做我想做的事情?
再见!
在ActionScript 3中,如果我遍历影片剪辑的子代,它将返回一个DisplayObjectContainer,它是一个DisplayObjects列表.
但是,AS3 typeof无法识别MovieClip,因为MovieClip现在是一个对象,而不是数据类型.如何正确识别MovieClip?
我在网上找到3个解决方案
解决方案1(我正在使用的解决方案):
首先将MovieClip名称设置为特定名称,然后在迭代过程中,使用child.name.indexOf("specificName")> -1检查子项的名称
解决方案2:
使用child.hasOwnProperty("numChildren")来标识MovieClip
解决方案3:
使用像FlashDevelop这样的第三方插件
哪种解决方案最好?还是有其他选择吗?
movieclip ×10
flash ×5
flash-cs4 ×2
actionscript ×1
addchild ×1
bitmap ×1
bitmapdata ×1
flashdevelop ×1
frame ×1
graphics ×1
list ×1
listener ×1
movies ×1
object ×1
png ×1
r ×1
removechild ×1
video ×1