Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Flex графика to flash cs4 (http://www.flasher.ru/forum/showthread.php?t=143160)

Stexx 09.08.2010 12:18

Flex графика to flash cs4
 
Доброе утро.Я начинаюнающий.Занимаюсь игрушкамиДо этого програмировал на actionscript 3.0 в adobe flash cs4.Тут приспичило попробовать сделать Monster Truck игрушку.Поспрашивал почитал,напрвили меня на движок FisixEngine_Alpha_0.5 fisixengine.com.По ходу нашел еще похожий двиг ape.Посмотрел ,по примеру сделал вот такое во flex
Код AS3:

package {
import flash.display.MovieClip;
        import flash.display.Sprite;
        import com.fileitup.fisixengine.collisions.ReactionModes;
        import com.fileitup.fisixengine.core.FisixEngine;
        import com.fileitup.fisixengine.core.FisixObject;
        //import com.fileitup.fisixengine.core.Vector;
        import com.fileitup.fisixengine.resources.FractalTerrain;
        import Car;
        import com.fileitup.fisixengine.primitives.Surface;
        import flash.events.Event;
        import flash.events.KeyboardEvent;
        import flash.ui.Keyboard;
        //[SWF(width='600',height='400',backgroundColor='0xFFFFFF',frameRate='30')]
public class Project extends Sprite
        {
 
                private var engine:FisixEngine;
            private var car:Car;
                public function Project()
                {
engine = new FisixEngine;
engine.setReactionMode(ReactionModes.PHYSICAL);
var walls:FisixObject = engine.newFisixObject();
walls.makeStatic();
walls.newSurface(new com.fileitup.fisixengine.core.Vector(0,0),new com.fileitup.fisixengine.core.Vector(0,400),5);
walls.newSurface(new com.fileitup.fisixengine.core.Vector(0,400),new com.fileitup.fisixengine.core.Vector(550,400),5);
walls.newSurface(new com.fileitup.fisixengine.core.Vector(550,400),new com.fileitup.fisixengine.core.Vector(550,0),5);
walls.newSurface(new com.fileitup.fisixengine.core.Vector(550,0),new com.fileitup.fisixengine.core.Vector(0,0),5);
walls.friction = 0.7;
walls.bounce = 0.5;
 
 
var terrain:FractalTerrain =  new FractalTerrain(new com.fileitup.fisixengine.core.Vector(30,200),new com.fileitup.fisixengine.core.Vector(500,200),-40 ,2 ,2);
terrain.setFriction(0);
engine.addObject(terrain);
 
car = new Car(60, 60);
engine.addObject(car);
 
 
engine.setRender(true);
engine.setRenderGraphics(graphics);
addEventListener(Event.ENTER_FRAME, enterFrames);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDowns);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUps);
                }
 private function enterFrames(e:Event):void
 {
        engine.mainLoop(1);
 }
 private function keyDowns(e:KeyboardEvent):void
 {
        if(e.keyCode == Keyboard.RIGHT) car.drive(5);
        else if (e.keyCode == Keyboard.LEFT) car.drive(-5);
 }
  private function keyUps(e:KeyboardEvent):void
 {
        car.drive(0);
 
 }
 
        }
        }

AS Car

Код AS3:

package
{
        import com.fileitup.fisixengine.core.FisixObject;
        import com.fileitup.fisixengine.particles.WheelParticle;
 
        public class Car extends FisixObject
        {
                private var wheel:WheelParticle;
                private var wheel2:WheelParticle;
                public function Car(_x:Number, _y:Number)
                {
                        wheel = new WheelParticle(-40, 0, 30);
                        wheel2 = new WheelParticle(40, 0, 30);
                        addObject(wheel);
                        addObject(wheel2);
                        newStickConstraint(wheel, wheel2);
                        setCenter(_x, _y);
                }
                public function drive(speed:Number):void
 
                {
                        wheel.rotateWheel(speed);
                        wheel2.rotateWheel(speed);
                }
 
        }
}

Получилась машинка ,которой можно управлять и 4 стены.Это для меня полностью новый код.Теперь я столкнулся с проблемой а как тут графику рисовать.Я привык все во flash cs4 рисовать,либо любимый фотошоп и в библиотеку,а далеее либо addChild либо по instance name .Ну окрыл я свой flash cs 4,сделал новый fla ,подключил к нему Project.as и библиотеки с движка.А как дальше все мои познания в actionscript 3.0 не катят,не один из методов тут не работает,даже колесо не могу заменить :) неговоря уже...Вопрос такой кто нибудь может примерчик показать как тут графику рисовать,хотябы колесо из библиотеки воткнуть вместо этих кружков :)А дальше уж как нибудь дальше буду пробовать разбираться.Желательно конечно чтоб рисовать все это дело во fla файле.Спасибо.И сразу извиняюсь если тему не там создал.А то у меня тут такой вопрос ,что я сам толкорм не пойму куда правелно его написать.Или может быть кто посоветует другой способ как делать такого рода игры,более простой и эффективный.

alatar 09.08.2010 15:17

Способов много, если хотите графику именно во флеш делать, то можно скомпилировать в swc. А уже swc использовать во флексе.

Dimitry_II 09.08.2010 18:05

Согласен с alatar.
Тут еще есть "нюанс": fla-файл - удел исключительно продуктов Macromedia/Adobe Flash MX/CSx - Уже рамки и обязательная легальность продукта. Если отказаться от fla, то работать можно уже и с бесплатными продуктами (компиляторами), и во флексе. Так что преимущества очевидны. Кстати, глядя на форумы, чем дальше, тем меньше людей работают в родной флешевской среде от Адоба, предпочитая им продукты сторонних производителей.

Stexx 09.08.2010 18:28

Ну я код пишу во флаш девелоп в нем удобней чем flash cs4 а рисую во fla файлах,я просто по дугрому то и не умею пока:)Ребят а можно примерчик как правельно сделать ембед в данном случае например того же колеса,я тут сижу и так и сяк нарисовал колесо,скомилировал файл Koleso.swf ?дале в car as пытаюсь ее загнать
Код AS3:

package
{
        import com.fileitup.fisixengine.core.FisixObject;
        import com.fileitup.fisixengine.particles.WheelParticle;
        import flash.display.MovieClip;
        public class Car extends FisixObject
        {[Embed(source="Koleso.swf")]
                private var KolesoSWF:Class;       
                private var wheel:WheelParticle;
                private var wheel2:WheelParticle;
                public function Car(_x:Number, _y:Number,mainMovie:MovieClip)
                {
                        wheel = new WheelParticle(-60, 0, 30);
                        wheel2 = new WheelParticle(60, 0, 30);
                        addObject(wheel);
                        addObject(wheel2);
                        newStickConstraint(wheel, wheel2);
                        var wheelMC1:MovieClip = new KolesoSWF();
                        mainMovie.addChild(wheelMC1);
                        wheelMC1.width = wheel.radius*2;
                        wheelMC1.height = wheel.radius*2;
                        //create a wheel attacher to connect the MC to the left wheel
                        newWheelAttacher(wheelMC1,wheel)
                        setCenter(_x, _y);
                }
                public function drive(speed:Number):void
 
                {
                        wheel.rotateWheel(speed);
                        wheel2.rotateWheel(speed);
                }
 
        }
}

И он мне жалуется на основной проект строку 57
Код AS3:

car = new Car(60, 60);

Ошибка звучит так car = 1136: Incorrect number of arguments. Expected 3. car = new Car(60, 60);Спсибо.Вобщем боьше вопрос заключается как правельно делать ембед swf файлу.Трудно однако :)

alatar 09.08.2010 20:28

Зачем swf? Я же писал swc. swc подключается к проекту как библиотека, у вас в проекте становятся доступны все классы из библиотеки у которых linkage был проставлен + автокомплит работает в большинстве редакторов.

Stexx 09.08.2010 22:52

Упс извиняюсь.Не правельно глянул.Ок ,ну вот я соеденил свой фла с проектом через ,ы в настройках publish setting fla файла я поставил source path с движка и патч библиотеки swc файл тоже сдвижка.И скажем если я создаю в своем фла файле обект делаю ему линкаге для акшн то его клас прекрасно виден например пишу в основном проекте var wheelMC1:MovieClip = new kol2(); где kol2 это мое колесо которое я експортировал для акшн скрипт ,затем я делаю трейс trace(wheelMC1); все в порядке обект виден,но вот как дальше привязать к колесу графическому с движка его wheel ?addChild не работает.Вобщем запутался.Извиняюсь.

alatar 10.08.2010 08:03

А вот это уже смотрите в документации к движку.

Stexx 10.08.2010 16:24

Ясно хорошо ,еще раз спасибо,буду разбираться.


Часовой пояс GMT +4, время: 15:31.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.