我可以使用一些帮助让我的#AS3/#AIR应用程序在#iOS上运行!
现在我有一个.SWF(v11),我在Windows(7)上使用Adobe AIR(v3.7)转换为.IPA.
如果我使用ipa-test-interpreter的-target进行转换,那么效果很好.
如果我使用ipa-test,ipa-debug,ipa-ad-hoc或ipa-appstore进行转换,应用程序似乎编译得很好,但在我的iPad上执行应用程序时,它只显示黑屏.
将我的iPad连接到桌面并监控控制台输出,我看到没有生成崩溃或错误消息; 该应用似乎在内部表现良好,它只是丢失了所有外部输出.
这意味着我可以测试和开发,但我实际上无法部署到应用商店.其他人遇到这个?
谷歌搜索我遇到了遇到这个问题的其他人,但还没有解决方案.我尝试的一件事是删除所有原生扩展,我也尝试删除-C编译器指令.两者都没有运气.
为了清楚起见,该应用程序在Mac,PC,Android,浏览器和iOS上以解释器模式运行完全正常; 它只是在iOS上的本机编译已经破碎.我听说有传言说ipa-test和ipa-interpreter有不同的内存分配例程,但我对这里的低端知之甚少.
远程调试器(在FlashDevelop中)似乎也没有连接.我认为它在运行时完全激发之前失败了,不知何故?我也在使用iphone-configuration-utility观看控制台输出,并且没有出现任何异常.
带有示例项目和说明的临时文件链接:https://dl.dropboxusercontent.com/u/1348446/test.zip
希望这是一个新问题,或者只是我遗漏了一些明显的问题.请帮忙!我在我的AS3应用程序中嵌入了一个字体.我正在做所有的事情并且它是半工作的.
在我的主要课堂上,
[Embed(source="Art/moolbor.ttf", fontFamily="MoolEmbed",
mimeType="application/x-font")]
var MoolEmbed:Class;
Run Code Online (Sandbox Code Playgroud)
然后在我的代码中:
var newFormat:TextFormat = new TextFormat();
newFormat.font = "MoolEmbed";
newFormat.size = 20;
newFormat.color = 0xFCF374;
year.autoSize = TextFieldAutoSize.LEFT;
year.text = "Hello World";
year.embedFonts = true;
year.setTextFormat(newFormat);
year.antiAliasType = "advanced";
Run Code Online (Sandbox Code Playgroud)
这完美无缺,文字显示得很漂亮.我可以旋转它,alphas适用于它,它很好地抗锯齿.问题是文本字段是动态的 - 稍后在代码中:
year.text = "And a second hello world";
Run Code Online (Sandbox Code Playgroud)
一旦触发此代码,文本字段就会完全消失.我打开
year.border = true;
Run Code Online (Sandbox Code Playgroud)
我可以看到文本字段仍然存在,但它的大小已经缩小到几个像素.想想也许是autoSize搞砸了,
//year.autoSize = ...;
Run Code Online (Sandbox Code Playgroud)
同样的问题.考虑到它可能是嵌入式,我评论了这条线:
//year.embedFonts = true;
Run Code Online (Sandbox Code Playgroud)
文本字段返回工作状态,但(可理解地)失去了执行alpha和旋转的能力.
知道发生了什么事吗?
我有两个PNG文件,"red.png"和"blue.png"; 它们都是透明的,但在不同的地方有一些像素的红色或蓝色斑点.
我想制作一个融合两者的PHP脚本; 它应该像以下一样简单:
$original = getPNG('red.png');
$overlay = getPNG('blue.png');
imagecopymerge($original, $overlay, 0,0, 0,0, imagesx($original), imagesy($original), 100);
header('Content-Type: image/png');
imagepng($original);
Run Code Online (Sandbox Code Playgroud)
当我运行这个脚本时,我得到的只是蓝点 - 透明度丢失了.我看到我应该添加这些:
imagealphablending($original, false);
imagesavealpha($original, true);
Run Code Online (Sandbox Code Playgroud)
(在原始和重叠上?)这似乎没有任何帮助.
我在PHP.net上看到了一些解决方法,可以解决这个问题:
$throwAway = imagecreatefrompng($filename);
imagealphablending($throwAway, false);
imagesavealpha($throwAway, true);
$dstImage = imagecreatetruecolor(imagesx($throwAway), imagesy($throwAway));
imagecopyresampled($dstImage, $throwAway,0,0,0,0, imagesx($throwAway), imagesy($throwAway), imagesx($throwAway), imagesy($throwAway));
Run Code Online (Sandbox Code Playgroud)
,它应该将PNG转换为"真彩色"图像并保持透明度.它确实似乎这样做了,但现在我看到的只是黑色背景上的蓝色.
我该怎么办?!
我正在Flex/AS3中编写一个flash应用程序,我似乎无法为其分配键盘焦点.我在开发早期就注意到了这个问题,并添加了一个带有"立即播放"按钮的启动画面,以吸引用户点击.但是,用户必须再次单击应用程序才能使键盘正常工作!
更糟糕的是,我有一个游戏中的快捷方式,可以返回主菜单.如果您返回主菜单然后单击"立即播放"按钮,SWF将再次失去焦点!
我可能搞乱儿童物体或意外破坏捕获键盘焦点的物体,但我不太确定它是如何工作的.你能指点我正确的方向吗?
我的应用程序是一个单独的.SWF文件,我直接在我的浏览器中运行它(不是通过网页调用它,尽管我最终会这样做).这是有问题的文件:
http://www.space-squid.com/game/Main.swf 当您单击"正常"时,您必须再次单击以实际获取键盘焦点.:( 随意问的问题!
编辑:这是我正在使用的一些代码.
在我的主要类中执行的一些第一个代码:
empty_sprite = new Sprite();
addChild(empty_sprite);
empty_sprite.stage.addEventListener(keyboard hooks...);
Run Code Online (Sandbox Code Playgroud)
我也试过这个以防万一我应该在我的根对象上设置钩子:
this.stage.addEventListener(keyboard hooks...);
Run Code Online (Sandbox Code Playgroud)
如果其他空的精灵导致问题:
background_image = new BackgroundImage();
background_image.x = etc etc alignment data;
addChild(background_image);
background_image.stage.addEventListener(keyboard hooks...)
Run Code Online (Sandbox Code Playgroud)
在所有这些例子中,我的键盘挂钩工作正常,只要我第二次点击..但绝不是第一次.:(
第二次编辑:我把问题缩小了.也许有人可以帮我解决这个问题,这可能是一个结构问题:
public function Main {
Some stuff...
empty_sprite = new Sprite(); // Create a new stage sprite
addChild(empty_sprite);
empty_sprite.stage.addEventListener(keyboard hooks...);
addChild(BackgroundImage); // I lay down my background image which is persistant
addChild(PlayNowButton); // I display my PlayNow button to the screen
More stuff...
} …Run Code Online (Sandbox Code Playgroud) 嘿!我正在尝试在AS3中序列化数据,但遇到了令人沮丧的问题.最初我遇到"myObjClass"无法转换的问题,但在我发现"registerClassAlias"之后,我让事情变得很好.
一段时间后,我向myObjClass添加了向量.我之前遇到了Vector Strings的麻烦,正如在此报道的那样:
https://bugs.adobe.com/jira/browse/FP-6693
所以我知道解决方法是包括:
registerClassAlias("String", String);
Run Code Online (Sandbox Code Playgroud)
我只是不确定如何在向量中注册子向量的别名(以及其他变量).这是我的代码:
var newObj:myObjClass = new myObjClass();
newObj.mySubXML = new Vector.<XML>();
newObj.mySubString = new Vector.<String>();
var myObj:Vector.<myObjClass> = new Vector.<myObjClass>();
myObj.push(newObj);
registerClassAlias("String", String); // Problem #1
registerClassAlias("XML", XML); // Problem #1
registerClassAlias("VecMyObjClass", Vector.<myObjClass> as Class); // Problem #2
// registerClassAlias("myObjClass", myObjClass); // This and the above are interchangable (same errors)
var bytes:ByteArray = new ByteArray();
bytes.writeObject(myObj);
bytes.position = 0;
myObj = bytes.readObject();
Run Code Online (Sandbox Code Playgroud)
问题#1:当我的编译中包含这两行时,最后一行(bytes.readObject())失败并显示错误:
Error #1034: Type Coercion failed: cannot convert __AS3__.vec::Vector.<Object>@42edb21 to __AS3__.vec.Vector.<myObjClass>.
Run Code Online (Sandbox Code Playgroud)
这真的很奇怪.就好像前两个registerClassAlias正在撤消第三个. …
我想在我的应用程序中加入Flash Pre-loader,但我只使用Flex SDK/AS3/Notepad来编写这个野兽.我无法访问Flash IDE.
有关如何在CS4中执行此操作的许多教程和帮助文件,但在代码本身中没有.有人能指点我吗?
大多数示例似乎都围绕在应用程序的其余部分之前将加载器符号放入第一帧 - 但我无法访问flex中的时间轴或框架(或者至少,我认为我没有! ).
我正在AS3编码,并希望为我正在显示到屏幕的文本添加笔画.我目前的代码是:
format = new TextFormat("BN Elements", 14, 0xEEEEEE, false, false, false, null, null, "left");
format.font = "BN Elements"
scoreText = initText(starsleftText, format, "", 160,5, 545, 61);
scoreText = "Stroke This Text";
Run Code Online (Sandbox Code Playgroud)
由于文本是动态生成的,我不能在Flash IDE中将其创建为文本对象 - 我知道要添加笔划我可以使用"glow"功能设置为1000%和低质量.
我想我的问题是,如何在AS3中直接应用具有类似属性的"发光"滤镜效果?还是有一种我不知道的替代"中风"功能?
我有一些PHP代码可以动态生成动态数据表.通过单击各种链接,您可以"优化"数据表.我想要的是这些链接中的每一个都保留当前的GET信息并添加到其中.IE:
$allPreviousVars = ???; // Could be 20+ vars
echo "<a href='".$allPreviousVars."&newVar=2'>Link</a>";
Run Code Online (Sandbox Code Playgroud)
我可以通过循环迭代$ _GET来想办法,但肯定有更快的方法吗?