0

私は As と Flash を初めて使用し、車の半分を Actionscript のコードでミラーリングする必要があります。誰かがコーディングを手伝ってくれませんか? 私はオンラインで見ましたが、私には何もはっきりしていないようです。

Flash Professional CS6 の main.as ファイルに多くの 'CarParts'.as ファイルがあり、そのうちのいくつかはデータを保存するためにミラーリングされます。たとえば、carPaintLeft.as、wheelLeft.as、rimsLeft.as、windowsLeft.as 、carLeft.as、... これはすべて、描画の中心 (x0、y0、z0) から X AXIS にミラーリングする必要があります。

たとえば、これは PaintInstance.as で、9 つの異なるメッシュを含むデータ ファイルです (この場合、すべて同じマテリアルを持ちます。たとえば、赤の車のペイントです)。これを Main.as ファイルにインポートし、そのすべて (9 つのメッシュ) をミラーリングする必要があります。これをどのようにコーディングすればよいですか?また、Main.as のどこにコーディングすればよいですか?それとも PaintInstance.as のどこにコーディングすればよいでしょうか? ここに私の PaintInstance.as があります:

package 
{
    import ASBase;
    import away3d.containers.ObjectContainer3D;
    import away3d.entities.Mesh;
    import away3d.core.base.Geometry;
    import away3d.materials.MaterialBase;


    import away3d.core.base.Geometry;
    import away3d.materials.ColorMaterial;
    import data.Hood_coverData;
    import flash.display.Bitmap;
    import data.Sideclosures_mainbodytopData;
    import data.Extmirror_bodypart_iData;
    import data.Fender_bodypartData;
    import data.Frontdoor_bodyData;
    import data.Sidemoldingpart_iData;
    import data.Sidemoldingpart_iiData;
    import data.Frontdoor_doorhandlepart_iData;
    import data.Frontdoor_doorhandlepart_iiData;

    public class PaintInstance extends ASBase
    {
        function PaintInstance ():void
        {
            super();
            buildMaterials();
            generate();
        }

        private function generate():void
        {
            var cont_rd:Vector.<Number> = Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);
            var cont:ObjectContainer3D = buildContainer( cont_rd, "cont", null);

            var hood_coverData:Hood_coverData = new Hood_coverData();
            var geomhood_cover:Geometry = hood_coverData.geometryData;
            var hood_cover_rd:Vector.<Number> = Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);
            var hood_cover:Mesh = buildMesh(geomhood_cover, hood_cover_rd, "hood_cover", getMaterialFromID("FrontDoor_DoorHandlePart_II0"), cont);

            hood_cover.subMeshes[0].material = getMaterialFromID("FrontDoor_DoorHandlePart_II0");
            var sideclosures_mainbodytopData:Sideclosures_mainbodytopData = new Sideclosures_mainbodytopData();
            var geomsideclosures_mainbodytop:Geometry = sideclosures_mainbodytopData.geometryData;
            var sideclosures_mainbodytop_rd:Vector.<Number> = Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);
            var sideclosures_mainbodytop:Mesh = buildMesh(geomsideclosures_mainbodytop, sideclosures_mainbodytop_rd, "sideclosures_mainbodytop", getMaterialFromID("FrontDoor_DoorHandlePart_II0"), cont);

            sideclosures_mainbodytop.subMeshes[0].material = getMaterialFromID("FrontDoor_DoorHandlePart_II0");
            var extmirror_bodypart_iData:Extmirror_bodypart_iData = new Extmirror_bodypart_iData();
            var geomextmirror_bodypart_i:Geometry = extmirror_bodypart_iData.geometryData;
            var extmirror_bodypart_i_rd:Vector.<Number> = Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);
            var extmirror_bodypart_i:Mesh = buildMesh(geomextmirror_bodypart_i, extmirror_bodypart_i_rd, "extmirror_bodypart_i", getMaterialFromID("FrontDoor_DoorHandlePart_II0"), cont);

            extmirror_bodypart_i.subMeshes[0].material = getMaterialFromID("FrontDoor_DoorHandlePart_II0");
            var fender_bodypartData:Fender_bodypartData = new Fender_bodypartData();
            var geomfender_bodypart:Geometry = fender_bodypartData.geometryData;
            var fender_bodypart_rd:Vector.<Number> = Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);
            var fender_bodypart:Mesh = buildMesh(geomfender_bodypart, fender_bodypart_rd, "fender_bodypart", getMaterialFromID("FrontDoor_DoorHandlePart_II0"), cont);

            fender_bodypart.subMeshes[0].material = getMaterialFromID("FrontDoor_DoorHandlePart_II0");
            var frontdoor_bodyData:Frontdoor_bodyData = new Frontdoor_bodyData();
            var geomfrontdoor_body:Geometry = frontdoor_bodyData.geometryData;
            var frontdoor_body_rd:Vector.<Number> = Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);
            var frontdoor_body:Mesh = buildMesh(geomfrontdoor_body, frontdoor_body_rd, "frontdoor_body", getMaterialFromID("FrontDoor_DoorHandlePart_II0"), cont);

            frontdoor_body.subMeshes[0].material = getMaterialFromID("FrontDoor_DoorHandlePart_II0");
            var sidemoldingpart_iData:Sidemoldingpart_iData = new Sidemoldingpart_iData();
            var geomsidemoldingpart_i:Geometry = sidemoldingpart_iData.geometryData;
            var sidemoldingpart_i_rd:Vector.<Number> = Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);
            var sidemoldingpart_i:Mesh = buildMesh(geomsidemoldingpart_i, sidemoldingpart_i_rd, "sidemoldingpart_i", getMaterialFromID("FrontDoor_DoorHandlePart_II0"), cont);

            sidemoldingpart_i.subMeshes[0].material = getMaterialFromID("FrontDoor_DoorHandlePart_II0");
            var sidemoldingpart_iiData:Sidemoldingpart_iiData = new Sidemoldingpart_iiData();
            var geomsidemoldingpart_ii:Geometry = sidemoldingpart_iiData.geometryData;
            var sidemoldingpart_ii_rd:Vector.<Number> = Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);
            var sidemoldingpart_ii:Mesh = buildMesh(geomsidemoldingpart_ii, sidemoldingpart_ii_rd, "sidemoldingpart_ii", getMaterialFromID("FrontDoor_DoorHandlePart_II0"), cont);

            sidemoldingpart_ii.subMeshes[0].material = getMaterialFromID("FrontDoor_DoorHandlePart_II0");
            var frontdoor_doorhandlepart_iData:Frontdoor_doorhandlepart_iData = new Frontdoor_doorhandlepart_iData();
            var geomfrontdoor_doorhandlepart_i:Geometry = frontdoor_doorhandlepart_iData.geometryData;
            var frontdoor_doorhandlepart_i_rd:Vector.<Number> = Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);
            var frontdoor_doorhandlepart_i:Mesh = buildMesh(geomfrontdoor_doorhandlepart_i, frontdoor_doorhandlepart_i_rd, "frontdoor_doorhandlepart_i", getMaterialFromID("FrontDoor_DoorHandlePart_II0"), cont);

            frontdoor_doorhandlepart_i.subMeshes[0].material = getMaterialFromID("FrontDoor_DoorHandlePart_II0");
            var frontdoor_doorhandlepart_iiData:Frontdoor_doorhandlepart_iiData = new Frontdoor_doorhandlepart_iiData();
            var geomfrontdoor_doorhandlepart_ii:Geometry = frontdoor_doorhandlepart_iiData.geometryData;
            var frontdoor_doorhandlepart_ii_rd:Vector.<Number> = Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);
            var frontdoor_doorhandlepart_ii:Mesh = buildMesh(geomfrontdoor_doorhandlepart_ii, frontdoor_doorhandlepart_ii_rd, "frontdoor_doorhandlepart_ii", getMaterialFromID("FrontDoor_DoorHandlePart_II0"), cont);

            frontdoor_doorhandlepart_ii.subMeshes[0].material = getMaterialFromID("FrontDoor_DoorHandlePart_II0");
        }

        private function buildMaterials():void
        {
            var material:MaterialBase;


            material = generateMaterial("FrontDoor_DoorHandlePart_II0", 0xFF0000);
            ColorMaterial(material).alpha = 1;
            ColorMaterial(material).ambientColor = 0x0;
            ColorMaterial(material).specularColor = 0x0;
            ColorMaterial(material).specular = 0;
        }

    }
}

これしかないのですが、よくわかりません どなたか教えていただけないでしょうか?yourPrefabClass.mesh if (yourPrefabClass.mesh[indexloop].name == “theNameOfTheWheelMeshThaTIWantToMirror”) に対する擬似コードループ

var myWheel:Mesh = yourPrefabClass.meshes[indexloop];
var mirror:Mirror = new Mirror();
mirror.apply(myWheel, Mirror.X_AXIS, Mirror.CENTER, 0);

たとえば、私にとっては次のようになりますか?:

private function Mirror(): void 
{
    for (PaintInstance.meshes)
    {
        if (PaintInstance.meshes["Hood_Cover","sideclosures_mainbodytop","extmirror_bodypart_i","fender_bodypart","frontdoor_body","sidemoldingpart_i","sidemoldingpart_ii","frontdoor_doorhandlepart_i","frontdoor_doorhandlepart_ii"].name == “Hood_Cover”) 
        {
            var Hood_Cover:Mesh = PaintInstance.meshes["Hood_Cover","sideclosures_mainbodytop","extmirror_bodypart_i","fender_bodypart","frontdoor_body","sidemoldingpart_i","sidemoldingpart_ii","frontdoor_doorhandlepart_i","frontdoor_doorhandlepart_ii"];
            var mirror:Mirror = new Mirror ();
            mirror.apply(Hood_Cover, Mirror.X_AXIS, Mirror.CENTER, 0);
        }
    }
}

多くのメッシュでは、class.mesh ループに switch ステートメントを挿入する必要があり、switch ケースに専用のミラー機能が必要であり、たとえば、ミラー コマンドのスタックをプッシュできます。

お気に入り

switch(mesh.name){ case “myWheel”: doMirror(mesh, [ xmax, zmin ] );

一部の人にとっては明らかかもしれませんが、私は基本的にアクションスクリプトについて何も知らず、ほんの少しのプログラミングしか知りません。

事前にどうもありがとう

4

0 に答える 0