我在Sprite中有一个TextField,我总是希望TextField的alpha等于sprite的alpha.我如何订阅Sprite中所做的更改?我想我需要解决一些PropertychangeEvent,但我看不到sprite支持这个开箱即用?
class TextWidget extends Sprite{
private var textfield:TextField;
public function TextWidget(){
textfield = new TextField();
textfield.alpha = this.alpha; //does'n help
addChild(textField);
??
this.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, updateAlpha);
??
}
private function updateAlpha(event:PropertychangeEvent):void{
textfield.alpha = this.alpha;
}
}
Run Code Online (Sandbox Code Playgroud) 这个问题可能很容易解决,但我不清楚.可能只是我做错了事.我已经研究了OOP和AS3几个小时,所以我熟悉概念但不熟悉流程.这是我整理的一个项目,以加强我一直在学习的东西.
这里的目标是从库中将预先创建的动画片段的实例加载到舞台,然后在FLA的时间帧ActionScript中执行定位功能,并在AS文件的ActionScript类中执行一个函数,以调整动画片段的大小并输出跟踪.
我有两个文件:smileface.fla smileface.as
在smileface.fla中,我有一个驻留在我的库中的MovieClip对象.它具有以下相关属性......
Name: faceInst Class: smileface Base Class: null
我有一个框架(关键帧),它包含以下ActionScript:
var faceInst:smileface = new smileface(); this.addChild(faceInst); faceInst.x = stage.stageWidth/2; faceInst.y = stage.stageHeight/2;
在我的smileface.as文件中,我有以下代码:
package {
import flash.display.MovieClip;
import flash.display.Stage;
public class smileface extends MovieClip {
public function smileFunction() {
this.width = stage.stageWidth/5;
this.height = stage.stageHeight/5;
trace("Done!");
}
}
}
我希望(没有理由这样做)在加载movieclip对象之后,它将根据规范调整大小,然后输出跟踪.
然而,相反的是,面部显示在舞台上,居中,但没有调整大小,并且根本不输出轨迹.
如何防止我的SWF反编译?
从反编译预防的角度来看, ActionScript 1/2和ActionScript 3之间有什么区别吗?
这是以下问题的相反问题:
你如何反编译swf文件? 你如何反编译swf文件
假设你有
private static const INCLUDE_MY_DEBUG_CODE:Boolean = false;
public function runMyDebugCode():void
{
if ( INCLUDE_MY_DEBUG_CODE )
{
callADebugFunction();
}
}
private function callADebugFunction():void
{
...
}
Run Code Online (Sandbox Code Playgroud)
鉴于没有其他对callADebugFunction的引用,是否可以保证callADebugFunction不是编译构建的一部分?
所以,我有这个代码:
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Rectangle;
import flash.utils.ByteArray;
var bmd:BitmapData = new BitmapData(10, 10, true);
var seed:int = int(Math.random() * int.MAX_VALUE);
bmd.noise(seed);
var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height);
var pixels:ByteArray = bmd.getPixels(bounds);
Run Code Online (Sandbox Code Playgroud)
有没有办法在pixelsByteArray中有效且快速地获得主色和/或平均色.
noise用于此处的示例.我将在BitmapData上绘制其他内容.
我找到了一些从BitmapData中提取平均颜色味觉的方法,但这对我来说还不够,因为我想要从该图像的矩形平均值.
提前致谢!
例如在C# @ -quoted字符串文字中以@开头并用双引号括起来......
那么在Actionscript中是否有@ -quoted字符串?
var b:Boolean = condition1() && condition2();
Run Code Online (Sandbox Code Playgroud)
在此声明中,如果condition1()计算结果为false,将condition2()进行评估吗?
<?php
$someVar = count(scandir("bilder/") - 2);
?>
Run Code Online (Sandbox Code Playgroud)
我需要导入$someVar我的.fla文件,我只需要它的值:
var timer:Timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER, nextSlide2);
timer.start();
var ld:Loader = new Loader();
var bildeArr = [];
var backend: String = 'backend.php';
var loader: URLLoader = new URLLoader;
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.load( new URLRequest(backend));
trace(loader.data);
ld.x = 20;
ld.y = 20;
for(var i:int = 1; i<9; i++) {
bildeArr.push("bilde" + String(i));
}
i = 0;
function nextSlide2(evt:TimerEvent):void {
trace(i);
ld.load(new URLRequest("bilder/" + bildeArr[i] + ".png"));
addChild(ld);
if(i > 6) { …Run Code Online (Sandbox Code Playgroud) 在回调函数中调用类的方法时,不能使用thisobject.
要调用该方法,在JavaScript中,我声明that的变量,分配this到that,并且使用that回调内部调用的方法this.
在动作脚本中,我是否必须像在javascript中那样做?
以下代码是that用于在回调内调用方法的示例.
动作中有更简单的方法吗?
class C {
private var that:C;
function C() {
that = this
}
public function f1():void {
var sp:Sprite = new Sprite;
sp.addEventListener(MouseEvent.CLICK, function():void {
this.f2(); // this doesn't work
that.f2(); // that works
});
}
public function f2():void {
trace('hello');
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个方法可以同时从PHP调用两个服务.由于Flex的多任务处理能力,我认为每个服务都在不同的线程中调用.
我的问题是:两个服务都从数据库返回一个对象数组.但第二个服务将提供一个DataGrid,它具有每个记录的处理程序.这个处理程序将比较两个Arrays中的那个,当Flex在完成第一个之前完成第二个时,我遇到了问题,因为处理程序试图将数据与空对象进行比较(PHP服务尚未响应).
有任何想法吗?
编辑:
在我发布这个问题的那天,有些人给了我一个惊人的想法,但遗憾的是他似乎删除了他的帖子,我不知道为什么.我坚持他的想法,我找到了一个符合我的设计模式的解决方案.
他告诉我把一个标志告诉我数据是否已经加载.所以这就是我现在正在做的事情:我称之为先服务; 我叫第二次服务;
在第一个服务的结果,我检查第二个服务上的标志,如果它是真的,这意味着它已经加载,所以我可以将我的数据存储在DataGrid中,以便可以调用处理程序.如果该标志为false,则表示尚未加载第二个数据,因此我将其存储在一个没有绑定到dataGrid的_temp DataProvider上,而不是存储在官方dataProvider中的数据.在这种情况下,当加载第二个数据时,会将侦听器事件分派给第一个服务,告诉他捕获_temp dataProvider并将其复制到官方dataProvider.
特别是,我喜欢这个解决方案,并没有打破Table Data Gateway的设计模式.
谢谢大家的帮助.
actionscript ×10
flash ×6
apache-flex ×2
c# ×1
callback ×1
decompiling ×1
flex3 ×1
php ×1
string ×1