Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash AS3如何创建双面MovieClip,当旋转时它也显示另一面?_Flash_Actionscript 3_Graphics_Computational Geometry - Fatal编程技术网

Flash AS3如何创建双面MovieClip,当旋转时它也显示另一面?

Flash AS3如何创建双面MovieClip,当旋转时它也显示另一面?,flash,actionscript-3,graphics,computational-geometry,Flash,Actionscript 3,Graphics,Computational Geometry,我有一个有两帧的电影剪辑。在第一帧我有正面,在第二帧我有背面。我通过rotationX,rotationY,rotationZ属性旋转电影剪辑 我想在MovieClip旋转时显示第2帧。请帮忙。我不想在课堂上使用PaperVision。另外,请考虑场景的透视图。 有时,电影剪辑可能不仅依赖于旋转。它同样取决于位置(仅在透视视图中) 谢谢你考虑我的问题 问候,, 桑基特 请在这里检查问题 查看此链接 不要使用两个框架,而是将你的正面和背面作为一个框架上的两个电影剪辑。将它们放在一起,正面在上面,

我有一个有两帧的电影剪辑。在第一帧我有正面,在第二帧我有背面。我通过rotationX,rotationY,rotationZ属性旋转电影剪辑

我想在MovieClip旋转时显示第2帧。请帮忙。我不想在课堂上使用PaperVision。另外,请考虑场景的透视图。

有时,电影剪辑可能不仅依赖于旋转。它同样取决于位置(仅在透视视图中)

谢谢你考虑我的问题

问候,, 桑基特

请在这里检查问题 查看此链接

不要使用两个框架,而是将你的正面和背面作为一个框架上的两个电影剪辑。将它们放在一起,正面在上面,背面水平翻转。我使用这个输入帧事件来跟踪旋转,并显示和隐藏卡的正面。我在点击卡片正面时启动事件,跟踪tween并在其打开时杀死事件。也许你也可以跟踪位置和旋转来完成你想要的

protected function oef(evt:Event):void
{
    var rot:Number = Math.round(_front.rotationY);

    if(rot >= 0 && rot <= 89)
    {
        _front.outside.visible = true;
    }
    else
    {
    _front.outside.visible = false;
    }           
}
受保护功能oef(evt:事件):无效
{
变量旋转:数字=数学圆(_front.rotationY);
如果(rot>=0&&rot请查看此链接

不要使用两个框架,而是将你的正面和背面作为一个框架上的两个movieclips。将它们放在彼此的顶部,正面在顶部,并水平翻转背面。我使用此ENTER_frame事件跟踪旋转,显示和隐藏卡的正面。我在单击卡的正面时启动该事件,跟踪tween和kill当活动开始时。也许你也可以跟踪位置和旋转来完成你想要的

protected function oef(evt:Event):void
{
    var rot:Number = Math.round(_front.rotationY);

    if(rot >= 0 && rot <= 89)
    {
        _front.outside.visible = true;
    }
    else
    {
    _front.outside.visible = false;
    }           
}
受保护功能oef(evt:事件):无效
{
变量旋转:数字=数学圆(_front.rotationY);

如果(rot>=0&&rot听起来像是要根据旋转和透视角度的组合来确定看到哪一侧

你已经知道如何阅读了

看起来透视角度仅基于x的变化(基于图像)

在游戏中,这就像是通过一个英雄的眼睛看东西,他只能左右行走,不能向前、向后或转身。请确认

如果是这样的话,我建议用这样的方法来寻找透视角度

这是一个2d数学,就像从头顶上观看你的相机(英雄)和照片一样,并找出它们之间的角度

//find difference between hero and pic positions  (delta means difference or change)
var deltaPt:Point = new Point(pic.x - hero.x, pic.y - hero.y);
//find angle between hero and pic, then convert to degrees from radians
var angle:Number = Math.atan2(deltaPt.y, deltaPt.x) * 180 / Math.PI

var testAngle:Number = pic.rotation + angle;
trace("angle: "+angle);
trace("testAngle: "+testAngle);
检查这些痕迹是否接近您的预期

也许角度应该是负的,而不是正的,或者偏移90º或其他什么(我倾向于猜测并检查一下,对不起,倾斜)

如果你的英雄也能轮换…这可能会变得更复杂,或者可能只是需要将英雄的轮换添加到组合中,我还没有考虑到这一部分

一旦你把它调整好,它就会以这样的方式结束,我相信你已经知道了

if(testAngle > 90){gotoAndStop(2)}
else{gotoAndStop(1)};

希望这能有所帮助。

听起来你想根据旋转和透视角度的组合来确定你看到的是哪一侧

你已经知道如何阅读了

看起来透视角度仅基于x的变化(基于图像)

在游戏中,这就像是通过一个英雄的眼睛看东西,他只能左右行走,不能向前、向后或转身。请确认

如果是这样的话,我建议用这样的方法来寻找透视角度

这是一个2d数学,就像从头顶上观看你的相机(英雄)和照片一样,并找出它们之间的角度

//find difference between hero and pic positions  (delta means difference or change)
var deltaPt:Point = new Point(pic.x - hero.x, pic.y - hero.y);
//find angle between hero and pic, then convert to degrees from radians
var angle:Number = Math.atan2(deltaPt.y, deltaPt.x) * 180 / Math.PI

var testAngle:Number = pic.rotation + angle;
trace("angle: "+angle);
trace("testAngle: "+testAngle);
检查这些痕迹是否接近您的预期

也许角度应该是负的,而不是正的,或者偏移90º或其他什么(我倾向于猜测并检查一下,对不起,倾斜)

如果你的英雄也能轮换…这可能会变得更复杂,或者可能只是需要将英雄的轮换添加到组合中,我还没有考虑到这一部分

一旦你把它调整好,它就会以这样的方式结束,我相信你已经知道了

if(testAngle > 90){gotoAndStop(2)}
else{gotoAndStop(1)};

希望对您有所帮助。

为了补充现有的解决方案,这里有一些现成的实用程序:


HTH

为了补充现有的解决方案,这里有一些现成的实用程序:


谢谢你的回答。但是我的问题没有那么复杂。考虑一个平行于YZ平面的平面。如果它在中心,那么我们只看到一条垂直线。如果没有任何旋转,如果它向左移动,那么我们看到平面的一个侧面,如果它向右移动,我们就会看到另一边。如何确定?在同一个场景中。如果你可以在水平移动的情况下跟踪平面的X,如果垂直移动,则可以跟踪平面的Y。将这些值与你的舞台宽度或高度进行比较,看看它的左/右或上方/下方的中心和隐藏/显示适当的一边。给我一个例子,我举一个例子。我们需要考虑透视投影类,并用T来操纵。他使用3D矩阵来获得结果。这不仅仅是X坐标。可以有旋转X、旋转Y、旋转Z和X、Y、Z定位。我可以在程序中随时更改投影中心,它应该在输出中反映相同的位置。在示例中,旋转概念非常接近完美。但它有错误。请放置鼠标在球体的中心,然后看球的上、下两极的正方形。它们是不同的。它们都应该实际显示背面。谢谢你的回答。但是我的问题没有那么复杂。考虑一个平行于YZ平面的平面。如果它在中心,那么我们。