Actionscript 3 镜像/复制电影剪辑as3 Air

Actionscript 3 镜像/复制电影剪辑as3 Air,actionscript-3,air,movieclip,mirroring,Actionscript 3,Air,Movieclip,Mirroring,我在这个问题上遇到了麻烦,因为我无法找出有效搜索的正确术语。以下是我正在研究的内容: 这是一个在观众面前的舞台上表演的太空射手。大屏幕向观众展示了飞船在太空中飞行,拍摄小行星。底部是平视显示器,显示生命值、盾牌、时间和弹药。随着时间的推移,护盾会自动耗尽。一旦达到0%,它将显示一个3位数的代码,供观众向飞行员(不看大屏幕的人)呼喊。一旦他输入代码,护盾就会重新激活,循环继续。这同样适用于重新加载 我正在使用Flash CC和AS3开发Air桌面应用程序 现在,我要让电脑旁的人在没有屏幕的情况下工

我在这个问题上遇到了麻烦,因为我无法找出有效搜索的正确术语。以下是我正在研究的内容: 这是一个在观众面前的舞台上表演的太空射手。大屏幕向观众展示了飞船在太空中飞行,拍摄小行星。底部是平视显示器,显示生命值、盾牌、时间和弹药。随着时间的推移,护盾会自动耗尽。一旦达到0%,它将显示一个3位数的代码,供观众向飞行员(不看大屏幕的人)呼喊。一旦他输入代码,护盾就会重新激活,循环继续。这同样适用于重新加载

我正在使用Flash CC和AS3开发Air桌面应用程序

现在,我要让电脑旁的人在没有屏幕的情况下工作。观众将负责告诉他该往哪个方向走,什么时候开火,以及重新装填和重新屏蔽的代码。这是针对高中生的,所以目标是大声叫喊

我希望飞行员能够在自己的显示器上看到除HUD之外的所有东西。就像我说的,他的背对着大屏幕,他只有一个键盘。是否可以在另一个窗口复制/镜像/复制/显示我的游戏供飞行员查看?他运行它的计算机将使用投影仪作为扩展显示器。它不必是交互式的,因为他可以控制大屏幕上显示的游戏。这只会让他看到飞船在没有抬头显示器的情况下四处飞行

我希望这是有道理的。有什么想法吗?非常感谢你们能给我的任何帮助


托尼

我将尝试分别回答你的每个问题

为了在投影屏幕和飞行员显示器上都显示一些内容,您需要将air应用程序设计为包括两个屏幕,并以两个屏幕的分辨率在窗口模式下运行。假设您的显示器以1920x1080的分辨率运行,您的投影仪将按1024x768。这就是您希望应用程序的外观:

您需要将空气设置设置为使用自定义镀铬,这将隐藏标准窗口镀铬。您还需要在“高级”选项卡中设置初始窗口设置:

所有这些都将使您能够在一台计算机上运行应用程序,并且本质上有两个独立的显示器

现在,关于“复制”部分。你要做的是在飞行员的视图中有一个
位图
,你将不断地画出你想让他看到的部分,而不是你不想让他看到的部分。这一过程通常被称为闪电战

我不知道你的应用程序是如何设置的,但我希望你的HUD是独立的。假设你有一个
MovieClip
,里面除了HUD之外,什么都有,下面是你要做的:

var _pilotViewCanvasData:BitmapData = new BitmapData(1920, 1080); // ideally, you would make this just big enough to display what you need to display, not the actual size of the pilot view
var pilotViewCanvas:Bitmap = new Bitmap(_pilotViewCanvas);
//add your canvas to the pilot's view area of your application
addChild(pilotViewCanvas);

//add an enter frame listener so you can repaint the canvas every frame
addEventListener(Event.ENTER_FRAME, onTick);
function onTick(e:Event):void
{
    _pilotViewCanvasData.draw(yourGameClip); // this is where you paint the canvas with your display
}
这就是我所做的(感谢Marcela的指导):

为了解决双屏幕问题,我最终创建了两个单独的Air项目。第一个空中项目是我的游戏(基本的太空射击游戏,小行星向飞船坠落)。 第二个航空项目是为飞行员设计的。记住,我的游戏的目标是让观众在指导下向控制游戏的人尖叫(即“开火!”“重新装填!”“向左移动!”等等)。我希望控制飞船的人有自己的界面,显示有限的细节(允许观众参与)。对于试点项目,我创建了一个雷达类型的背景,在舞台上有一条船的绿色轮廓。使用localconnection,每次飞船移动时,我都会将飞船的x&y坐标从主游戏传递到pilot应用程序,并将其应用到飞行员的绿色轮廓飞船上

每次在舞台上添加一个星体时,我都会向pilot应用程序发送另一个localconnection方法,其中包含该小行星的坐标。最后,飞船、导弹和天体都以小光点的形式出现在飞行员的应用程序上。如果一个星体在主游戏中被摧毁,我会向飞行员的应用程序发送一个localconnection方法,告诉它移除与刚刚被摧毁的小行星索引相同的数组中的光点


它工作得非常好。非常感谢你为我指明了正确的方向,玛塞拉

这太棒了!谢谢你花时间帮忙!是的,我的HUD在一个包含sef的movieclip中,所以位图绘制是完美的解决方案。扩展舞台大小的技巧可能是我的选择,但对我的情况并不理想。游戏本身正在分发,我不知道电脑或投影仪的分辨率。我在考虑为飞行员创建一个单独的air应用程序,使用两个应用程序之间的localconnection进行通信。我以前从未这样做过。是否可以将pilotViewCanvas发送到另一个air应用程序?再次感谢您快速、彻底的回复!您当然可以使用
LocalConnection
在两个应用程序之间进行通信。此时,您可能希望尽量减少来回传递的信息量。根据游戏的大小,
BitmapData
对象可能会变得相当大。这就是说,你可能想考虑来回的坐标。然后,在pilot视图中,可以使用坐标重新构建游戏视图。