我正在编写Starling的棋盘游戏(动作脚本3).我使用的Starling版本有一个名为Sprite3D的类,它允许我方便,轻松地编码在这个游戏中使用的卡片的翻转.我很困扰的事实是我的卡片在翻转时会改变尺寸,而我无法找到更改的来源.
所有帮助表示赞赏.
可以在此YouTube视频上查看此问题.
在github页面上可以在github上完整地看到代码.
我将继续更详细地介绍......视频中包含以下所有信息.
Card类不包含可视信息.它是一个控制器类.它确实拥有两个精灵.一个精灵填充正面,另一个精灵填充背面.Card类还应用了蒙版和尺寸属性,以使面具有相同的大小和形状.
Card类还包含动画代码.设置卡片动画的代码与在starling博客上发现的视频中使用的代码非常相似,该视频显示了如何在2D内存游戏中快速,轻松地实现Stage3D.Card类通过使用补间动画旋转,以将卡的rotationY
属性从0 更改为PI,并在触摸事件上将PI从PI更改为0.在翻转过程中发生错误,因此我将在此处包含翻转代码:
public function flip() : void {
_state = !(this._state);
if( this.animations ){
var tween : starling.animation.Tween = new Tween( this, 2, starling.animation.Transitions.EASE_OUT_BOUNCE );
var card : Card = this;
var didFlip : Boolean = false;
tween.animate("rotationY", this._state == Card.FACE_UP ? Math.PI : 0 );
tween.onUpdate = updateVisibility;
Starling.juggler.add( tween );
}
}
private function updateVisibility():void
{
var sHelper:Vector3D = new Vector3D();
var card : …
Run Code Online (Sandbox Code Playgroud) 我实际上是Android编程新手,我想知道像starling引擎这样的游戏引擎是如何工作的.我以前在画布上编程,SurfaceView和我能够制作简单的2D游戏,但现在我想要一个更简单的方法来制作一个动作游戏.因此,我不得不选择一个简单的引擎,通过研究我发现starling引擎是最容易学习和部署的引擎之一.
但是,我想问一下你如何在Android编程中使用引擎,因为在他们的教程中,我真的很困惑你如何把它变成一个Android游戏.
所以,我的主要问题是你可以使用ActionScript语言,如果你可以使用它来开发Android应用程序,就像在画布SurfaceView上一样.
我想在iOS上用Away3d纹理播放视频.它在Android和Windows上都很好用.该视频将在IOS的Starling上播放,所以我知道这不是视频.
这是我添加视频的方式
sphereGeometry = new SphereGeometry(5000, 64, 48);
panoTextureMaterial = new TextureMaterial(panoTexture2DBase, false, false, false);
panoVideoMesh = new Mesh(sphereGeometry, panoTextureMaterial);
panoVideoMesh.scaleX *= -1;
panoVideoMesh.rotate(Vector3D.Y_AXIS,-90);
scene.addChild(panoVideoMesh);
panoTexture2DBase.player.play();
view.render();
Run Code Online (Sandbox Code Playgroud)
在iOS上,当我尝试将其加载为视频纹理时,我从netstats获取此信息.
NetStream.Play.Start
NetStream.Play.Failed
NetStream.Play.Stop
Run Code Online (Sandbox Code Playgroud)
我正在使用Away3d NativeVideoTexture类
texture = context.createVideoTexture();
texture.attachNetStream(_player.ns);
Run Code Online (Sandbox Code Playgroud)
我认为它可能与MP4编码有关,我已经好好看看并找不到任何有效的东西,目前我在FFMEG中尝试这个
-vcodec libx264 -profile:v main -level 3.1 -crf 23 -s 1024:768 -movflags +faststart
Run Code Online (Sandbox Code Playgroud)
但我设定的似乎没有太大的区别.
知道为什么我的视频无法在iOS上加载为VideoTexture吗?
首先,我会说这里的上下文是Actionscript 3.0(IDE:Flashbuilder)以及Starling Framework.
所以,我想创建一个可以用于平台游戏或类似东西的平铺地图.
我想在800x600像素的舞台上使用8x8像素的瓷砖,而我遇到的问题是我不知道如何将这些7500+瓷砖对象添加到舞台而不会显着降低帧速率.
我发现性能下降来自于将每个磁贴添加到舞台,而不是初始化每个Tile对象.
我知道我没有给出太多具体信息,但我要求的是,是否有一种标准化的方法可以在不损失性能的情况下将数千个静态对象绘制到舞台上.我觉得有办法,我还没有找到它.
更新:
在您的所有帮助之后,我发现了一个似乎是一个很好的解决方案.起初我想实现Amy的解决方案,使用copyPixels()和draw()为整个地图制作一个大的位图数据,然后将其渲染到屏幕上.然而,然而,我想知道是否有一个与之相当的Starling,因为如果我不必将Starling与Native Flash混合,一切都会变得如此简单.
再次感谢Amy,我更多地研究了Starling的RenderTexture类,发现使用它的"drawBundled()"和"draw()"方法,我可以轻松地将所有的tile绘制到RenderTexture中,然后放入RenderTexture.进入图像(Starling的图像类),然后将该图像添加到屏幕.
这个解决方案比我之前尝试的愚蠢的慢速解决方案快了一百万倍,还有扁平的精灵等等.它的初始化时间更快,而且当renderTexture的Image在屏幕上时,帧速率似乎没有下降.
我要测试的一件事是,如果在游戏过程中更新瓷砖的图形很容易.比方说,如果水从源(或某物)传播并且"草"瓦片必须变成"水"瓦片,RenderTexture及其图像是否能够在没有某种滞后尖峰或性能打嗝的情况下改变其外观.我会尽快测试一下.
感谢大家的帮助!
如何使用Stage3D在Adobe AIR应用程序上快速显示网络摄像头?
我的目标是创建AR(增强现实)移动应用程序的原型.我已选择Adobe Flash AIR在移动和AIR应用程序上获得良好的3D图形支持,可轻松移植到许多移动平台(iOS,Android,Blackberry Playbook).
我想展示复杂的3D模型(所以我需要使用Stage3D).在Front Camera的视频下方.像往常一样AR应用.
http://www.augmentedplanet.com/wp-content/uploads/2009/11/AR-Dungeons-Challenge.JPG
Stage3D根本不透明所以我不能使用StageVideo快速显示Camera的内容,因为StageVideo在Stage3D下没有看到.
只有我发现的决定 - 创建具有动态纹理更新的平面.
以下是webcamvideo与Starling Framework(Stage3D)集成的示例.但是对于许多普通的移动设备,我们得到如此大的纹理更新(几乎与屏幕分辨率一样大),任何应用程序都会降低到低fps甚至崩溃.我在Galaxy Note上做了什么.凭借320x200的纹理尺寸,它具有相当不错的性能,但在AR应用程序看起来很难看.
那么在AIR上创建AR的任何出色解决方案都是如此?有人有同样的挑战吗?
我现在已经搜索了一段时间,以获得如何编写允许用户按住的按钮的明确示例.虽然这种情况发生,但我想执行一些代码.
我已经实现了TouchEvent.Touch和touchPhase.Began,但它只触发一次.
我无法找到关于如何实现这一点的明确解释.任何帮助表示赞赏.
btnPress.addEventListener(TouchEvent.TOUCH, isPressed);
private function isPressed(event:TouchEvent){
var touch:touch = event.getTouch(btnPress, TouchPhase.BEGAN);
if(touch)
{
trace("pressed");
}
}
Run Code Online (Sandbox Code Playgroud) 我在as3移动项目上工作,我使用starling作为Framework,我如何使用舞台视频而不是视频播放器添加关于starling的视频.舞台视频选项对性能来说要好得多.任何人建议我.
我有一个Starling Sprite
,我想要获得触摸事件.我正在使用
content.addEventListener(TouchEvent.TOUCH, onTouch);
function onTouch(e:TouchEvent) {
var touch:Touch = e.getTouch(content) as Touch;
if (touch) {
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这只适用于Sprite的子项被触摸而不是它们之间的空间.我想如果我创建一个alpha'd图像并在其下面粘贴它应该接收触摸事件,但有更好的方法吗?
我也在考虑听取舞台上的触摸并做相当于一个hitTestPoint()
.
我想出来了
var hitTest = (touch && content.hitTest(this.globalToLocal(new Point(touch.globalX, touch.globalY))));
Run Code Online (Sandbox Code Playgroud)
但这似乎也不起作用,触摸事件仅在触摸内容Sprite的子项时才起作用.
解:
最后,我使用了切尔尼夫建议的alpha'd Quad
bg = new Quad(width, height);
bg.alpha = 0;
addChildAt(bg, 0);
Run Code Online (Sandbox Code Playgroud) 我正在为所有ios设备开发一个iOS应用程序.我很难理解如何使用AssetManager类和scalefactor设置来管理所有不同的分辨率.
我认为来自starling和脚手架项目的官方文章(http://wiki.starling-framework.org/manual/multi-resolution_development)还有很多不足之处 - 它甚至没有考虑到视网膜iPad.
我可以很容易地设置,所以我可以区分iPad和视网膜iPad或iPhone和视网膜iPhone,但我如何结合这两者仍然能够以可管理的方式设置应用程序?
任何有关此主题的教程或文章的链接都会很棒.
我已经在AS3和Starling中开发了一个应用程序,可以移植到IOS.我已经更新了Default.png图像,这很有效但是我的应用程序需要一段时间才能加载,黑屏会显示大约3-4秒.
我到处寻找解决方案,但找不到任何工作.有人有工作解决方案吗?
非常感谢
大家好,我正在开发一个带有椋鸟的游戏,我想设置一个计时器,例如每2秒我想要发生一些事情.我使用过juggler elapsed prop,但我想知道是否有更有效的方法来做到这一点
谢谢,
哈立德
我需要通过创建FlexMobileApplication项目而不是ActionScriptMobileApplication项目来使用starling构建移动应用程序.
我可以在我的应用程序中同时使用MXML控件和Stage 3D(strarling内容).
我们为Adobe AIR构建了两个(分布式!)iOS应用程序:
将我们的设备(例如iPad 3)从iOS 7.1.2升级到iOS 8.0.2,我们遇到了许多错误并降低了性能:
以上所有都是仅在iOS 8中发现的错误,并且具有不同的设备和具有不同技术的不同应用程序(Starling /不是).除了AIR SDK 15之外,AIR SDK版本14,13甚至4也出现了问题.
基本上我可以说我们的应用程序在iOS 8和AIR SDK下无用.我们有其他本机应用程序使7> 8转换没有问题,因此它必须是AIR问题.
iOS 8应该像在iOS 7下一样工作.
谁也遇到过这些问题?有什么建议?
这也是我在Adobe Bugbase系统中发布的错误报告:
actionscript-3 ×10
air ×2
flash ×2
performance ×2
stage3d ×2
android ×1
apache-flex ×1
away3d ×1
game-engine ×1
ios ×1
ios8 ×1
mobile ×1
sprite ×1
tiles ×1
touch ×1
video ×1
webcam ×1