Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Импорт swc в FlashDevelop в библиотеку (http://www.flasher.ru/forum/showthread.php?t=210197)

neonoviiwolf 06.02.2015 18:33

Импорт swc в FlashDevelop в библиотеку
 
Народ, хелп, тутплю и гугл мне не помогает;)
Есть ролик, который я сделал в СС, экспортировал в swc и хочу его добавить в проект FlashDevelop, запихнул его в библиотеку, создал класс, хочу вывести на сцену, понимаю, что класс невозможно вывести, нужен спрайт мувик и т.п., ток не получается поменять, я где-то торможу, но не могу понять как поправить, впервые сел за девелоп
Ещё, подскажите код (когда-то находил) как задать размер экрана и количество кадров с помощью кода
Код AS3:

package
{
        import flash.display.Sprite;
        import flash.events.Event;
        import mx.core.IFlexModuleFactory;
        public class Main extends Sprite
        {
                [Embed(source = "../lib/fire.swf", symbol = "vihlop")] private var Vih:Class;
 
                public function Main()
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        this.addChild(Vih);
 
                }
        }
}

Что надо сделать, что бы была возможность вывести "Vih" на экран

faraday 06.02.2015 18:38

http://prntscr.com/61rf2d нужно подключить для начала swc к проекту
+ незабывать стаивть галку экспорта в AS http://prntscr.com/61rfky
Про embed с fd можете забывать)

neonoviiwolf 06.02.2015 18:39

А ещё вопрос, как должен будет теперь выглядеть код
В СС я создавал мувик, например gl_ship_mc, потом объявлял класс, который наследуется от мувика, как это будет выглядеть теперь?
Код AS3:

public class GlShipCl extends gl_ship_mc {


faraday это всё я сделал к написанию этой темы

faraday 06.02.2015 18:42

Код AS3:

public class gl_ship_cl extends gl_ship_mc

Да, так и будет выглядеть.
Удалите Embed? доавбляет так
Код AS3:

this.addChild(new vihlop());


neonoviiwolf 06.02.2015 18:43

Девелобу не нравится, что я Class хочу вывести на экран, я так понимаю, а вот как из него сделать например мувик, я не понимаю

faraday 06.02.2015 18:43

Да, и библиотеку экспортируйте лучше swc, а не swf Через ctrl+f12

Добавлено через 1 минуту
Ну вы и правда хотите вывести класс, не хватает слова new.

neonoviiwolf 06.02.2015 18:47

Код AS3:

this.addChild(new vihlop());

Это помогло, объясните почему? Я что-то не понимаю

Сразу возникает вопрос, как мне сделать массив из этих swc к примеру

Добавлено через 1 минуту
ещё вопрос, данные swc я могу получать? к примеру если swc мувик и в кадрах есть метки, я смогу до них достучаться? Могу я управлять кадрами(останавливать анимацию)?

faraday 06.02.2015 18:56

Ну вы пытались добавить на сцену Сам класс, а не его экземпляр. Я не понимаю на какой принцип работы вы ориентируетесь. Сейчас вы подключили либу к проекту, и все что в ней лежит - доступно из любого класса проекта.
Массив swc? зачем? Впринципе вы можете добавлять к проекту любое их количество.
Код AS3:

[Embed(source = "../lib/fire.swf", symbol = "vihlop")]

Вы пытаетесь здесь встроить уже добавленный на сцену символ. А во втором случае создаете новый

neonoviiwolf 06.02.2015 19:09

Так, что-то не врубился насчёт наследования
есть swc, создаём класс, что я должен написать, что бы swc столо для as3 мувиком и я смог написать наследование тут
Код AS3:

package vihlop 
{
        public class NewClass extends //???????????? тут!!!
        {
                public function NewClass()
                {
                }
        }
}


faraday 06.02.2015 19:14

У вас подключилось добавить на сцену без Embed?

neonoviiwolf 06.02.2015 19:15

Цитата:

Сообщение от faraday (Сообщение 1178717)
У вас подключилось добавить на сцену без Embed?

что нужно поменять?

faraday 06.02.2015 19:33

Вы в embed обращаетесь как к сиволу symbol = "vihlop"
Нужно поставить две галочки при экспорте из Flash, как на скрине. И обращаться потом как к классу.
Embed вообще убрать
После extends пишите имя класса который вводили в IDE

neonoviiwolf 06.02.2015 19:55

Цитата:

Сообщение от faraday (Сообщение 1178721)
Вы в embed обращаетесь как к сиволу symbol = "vihlop"
Нужно поставить две галочки при экспорте из Flash, как на скрине. И обращаться потом как к классу.
Embed вообще убрать
После extends пишите имя класса который вводили в IDE

галочки везде стоят

приведите плиз код для примера, не поллучается

faraday 06.02.2015 20:08

Вложений: 1
Вот пример рабочей сцены по вашему примеру.
Посмотрите

neonoviiwolf 06.02.2015 20:50

Оу, всё, понял, спасибо большое, я swc c swf, попутал, теперь понятно как работать. Взял отдельный мувик в работающей игре и выгрузил его в swf, а в голове swc.
Получается удобнее всего работать в связке с СС? т.е. есть файл png, закинуть его в СС, сделать мувик, выгрузить его в swc, добавить в девелопер, упростить до спрайта и орудовать? есть пути короче?

faraday 06.02.2015 21:21

что такое СС? Flash?
Если вам нужно работать с png, то прям его напрямую и вызывайте. Рекомендую только давать правильные имена таким классам lication.tile1.png например. Создавать так же var img:Bitmap=new lication.tile1.png();
Составные вещи, например интерфейсы лучше сохранять как мувики. И компоновать их во флеше. А потом уже экстендить девелопером и работать с содержимым. Упрощать до спрайтов практически никогда не требуется, только лишний гемор.

neonoviiwolf 06.02.2015 21:57

Вложений: 1
пишу
Код AS3:

private var IngBackGround: Bitmap = new lib._background.png();

ругается
D:\ProjactFlash\InkWar\src\Main.as(12): col: 43 Error: Access of undefined property lib.

faraday 06.02.2015 22:07

Да, перепутал)
Просто Обычно ресурсы подтягиваю в проект через синглтон. Который отдает картинки по именам.
Подругому да, точки в именах классов - использовать нельзя.
Код AS3:

pubic static function getImg(imgName:String):Bitmap{
return new (getDefinitionByName(imgName) as Class);
}


neonoviiwolf 06.02.2015 22:30

а как я imgName получу из библиотеки?
Код AS3:

package
{
        import flash.display.Bitmap;
        import flash.events.KeyboardEvent;
        import flash.media.AVSegmentedSource;
        import flash.ui.Keyboard;
        import flash.events.Event;
        import flash.display.MovieClip;
        import flash.utils.getDefinitionByName;
        import daub.StartDaubClass;
        [SWF(width = "1600", height = "1050", frameRate = "50", backgroundColor = "#FFFAAF")]
 
 
        public class Main extends MovieClip
        {
                //private var ImgBackGround: Bitmap = new _background();
 
                public function Main()
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        var img:Bitmap = getImg(_background);
                }
                private static function getImg(imgName: String): Bitmap
                {
                        return new (getDefinitionByName(imgName) as Class);
                }
        }
}


faraday 06.02.2015 23:22

а getImg передаете название класса, например img.png . и функция возвращает его из библиотеки.
Но это не обязательно, можно напрямую делать как писал выше. Только убрать точки из названий классов.

neonoviiwolf 06.02.2015 23:40

faraday я бы не спрашивал, если работало, можно пример обоих рабочих вариантов, если не очень сложно.

Добавлено через 6 минут
у меня _background это png рисунок

faraday 07.02.2015 00:48

var img:Bitmap = getImg('_background');
Функция строку принимает

neonoviiwolf 07.02.2015 01:09

единственный способ, который у меня заработал, по поводу остальных, находил в гугле примеры, но они относились к 2010-2013 годам и те моменты, которые нужно было в FD настроить, у меня их просто нет
Код AS3:

package
{
        import flash.display.Bitmap;
        import flash.events.KeyboardEvent;
        import flash.media.AVSegmentedSource;
        import flash.ui.Keyboard;
        import flash.events.Event;
        import flash.display.MovieClip;
        import flash.utils.getDefinitionByName;
        import daub.StartDaubClass;
        [SWF(width = "1600", height = "1050", frameRate = "50", backgroundColor = "#FFFFFF")]
 
        public class Main extends MovieClip
        {
                [Embed(source = "../lib/_background.png")] private var imgBackground:Class;
                public function Main()
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        this.addChild(new imgBackground());
                }
        }
}


faraday 07.02.2015 01:28

Я выложил рабочий пример, а вы опять используете embed)

neonoviiwolf 07.02.2015 01:32

рабочий подходит, когда я в библиотеку кидаю классы, на не рисунки

faraday 07.02.2015 01:41

рисунки нужно по другому экспортировать http://prntscr.com/61xctb

neonoviiwolf 07.02.2015 14:18

ок, сделал, но у не могу его выгрузить в swc никак, не доступно

Добавлено через 2 часа 4 минуты
вот переделал задний фон в мувик, выгрузил его, хочу из него сделать спрайт и вывести на экран, но не даёт гад
Код AS3:

package
{
        import flash.display.Bitmap;
        import flash.display.Sprite;
        import flash.events.KeyboardEvent;
        import flash.media.AVSegmentedSource;
        import flash.ui.Keyboard;
        import flash.events.Event;
        import flash.display.MovieClip;
        import flash.utils.getDefinitionByName;
        import daub.StartDaubClass;
        [SWF(width = "1600", height = "1050", frameRate = "50", backgroundColor = "#FFFFFF")]
 
        public class Main extends MovieClip
        {
                public function Main()
                {
 
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        var img: Sprite = imgBackGround as Sprite;
                        stage.addChild(img);
                }
        }
}

[Fault] exception, information=TypeError: Error #2007: Parameter child must be non-null.

Добавлено через 11 часов 29 минут
СС не поддерживает импорт swc и похоже функции по экспорту тоже обрезали, у вас какой Adobe Flash Professional?

faraday 07.02.2015 15:16

Код AS3:

var img: Sprite = imgBackGround as Sprite;
stage.addChild(img);

Что вы хотите остюда получить? У вас в билиотеке лежит класс(!) , причем наследованный от movieClip(!)
Должно быть как минимум так
Код AS3:

        var img: MovieClip= new imgBackGround();

Код AS3:

Если экспортируете кратинку"http://prntscr.com/61xctb" target="_blank">http://prntscr.com/61xctb, то так

"margin:20px; margin-top:5px">
       
class="smallfont" style="margin-bottom:2px">Код AS3:

       
<code style="margin:0px" dir="ltr" style="text-align:left">
class="actionscript3" style="font-family:monospace;">        "color: #b1b100; font-weight: bold;">var img: "color: #6699cc;">Bitmap= "color: #b1b100; font-weight: bold;">new imgBackGround"color: #66cc66;">&#40;"color: #66cc66;">&#41;;
code>



Повторюсь, что такое СС? Не понимаю поему у вас такое элементарное дейсвтие, при наличии рабочего примера вызывает такие сложности. И откуда все эти придумывания.

ZackMercury 07.02.2015 16:34

Цитата:

что такое СС?
Creative Cloud.
Автор имел Adobe Flash Professional CC(Creative Cloud версию).
Цитата:

Also “Flash Pro CC does not support importing of SWC files.”
ТС прав, импорт урезан.

Качайте/ставьте CS6.


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

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