Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   реалистичная вода (http://www.flasher.ru/forum/showthread.php?t=137503)

dmitry bond 15.03.2010 14:16

реалистичная вода
 
Написал код ksoo , спасибо ему большое , все ок
Код AS3:

package 
{
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.display.StageScaleMode;
        import flash.filters.DisplacementMapFilter;
        import flash.geom.Point;
 
        /**
        * ...
        * @author Ksoo
        */

        public class Main extends Sprite
        {
                [Embed(source = 'image.jpg')]
                private var waterImage:Class;
                private var water_mc:Bitmap;
                private var myfilters:Array;
                private var myBitmap:BitmapData;
                private var i:int;
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
                        filters = new Array();                       
                        stage.scaleMode = StageScaleMode.NO_SCALE;
 
                        addEventListener(Event.ENTER_FRAME, anim);
                        myBitmap = new BitmapData(390,293,false,0);
                        var pt:Point = new Point(0,0);
                        var mpoint :Point = new Point(0,0);
                        var myDispl:DisplacementMapFilter = new DisplacementMapFilter(myBitmap, mpoint, 1, 2, 10, 50);
                        water_mc = new waterImage();
                        myfilters = new Array();
                        myfilters.push(myDispl);
                        water_mc.filters = myfilters;
                        addChild(water_mc);
                        i = 1;
 
                }
 
                private function anim(e:Event):void {
                        var filterList:Array = water_mc.filters;
                        var offset:Array;
                        offset = new Array();
                        offset.push(new Point(0, 0));
                        offset.push(new Point(i,i/4));
                        myBitmap.perlinNoise(50, 5, 2, 50, true, false, 7, true, offset);
                        //myBitmap.perlinNoise(
                        filterList.mapBitmap = myBitmap;
                        water_mc.filters = filterList;
                        i++;
                }
 
        }
 
}

Но код не может перекодировать файл image.jpg , если будет понятнее то вот ошибки :
unable to resolve 'image.jpg' for transcoding

Unable to transcode image.jpg.

помогите пожалуйста

AlexDesinger 15.03.2010 14:26

дк а вы через чего его компилируете то?
Если через flash, то, по-моему у него нет Embed - это для Flex, подгрузите картинку через лоадер или закиньте в библиотеку. Или уж компилируйте через Flex =)

etc 15.03.2010 14:41

Очевидно, что надо положить image.jpg рядом с проектом.

dmitry bond 15.03.2010 14:51

положил и теперь пишет
1017: The definition of base class BitmapAsset was not found.

Добавлено через 1 минуту
он мне предложил загрузить библеотеку flex , но почемуто нечего не происходит , фотка какая была , такая и осталась

Добавлено через 6 минут
вот исходник:
http://bda.my1.ru/novaja_papka-2.rar

etc 15.03.2010 15:05

Ну тогда просто в либу картинку положите и прицепите.
И да, отмазки «я не умею» — не принимаются.

dmitry bond 15.03.2010 15:19

Я учусь только благодаря вашему сайту
Не гоните в шею если реально смешно , но я превратил картинку в мувик , а его уже добавил в код
Код AS3:

[Embed(source = image_mc)]

но вышли ошибки , подскажите как прицеплять объект с библиотеки
прошу не закрывайте тему

GentleFLASH 15.03.2010 15:45

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

var myClass:Main = new Main();
 
this.addChild( myClass );

Удали слой с картинкой в исходнике, и вообще ее из библиотеки.
Далее имена классов принято нзывать с большой буквы, т.е Main, а не main. И создавать экземляры классов принято со скобочками, т.е new Main(), а не new main.
Да и вообще, найди книгу где учат основам AS3.

AlexDesinger 15.03.2010 17:31

мдааа, чувак, совет - срочно бежать за книгой К.Мук as3, все просто - открываете flash проект, стираете весь код со своего первого кадра, в поле Document Class пишете одно-единственно слово - main, дальше Cntr+Enter - и будет вам счастье.

Подсказка - это поле находится в панели propeties если щелкнуть на пустом месте в проекте, и да, картинку можно удалить и со стейджа, и из библиотеки.

etc
А разве Embed используется во flash при компиляции? У меня раньше были ошибки при попытке так картинку вшить, или я чего-то не знаю?

GentleFLASH 15.03.2010 18:06

AlexDesinger Flash CS4 поддерживает метатег Embed ;)

AlexDesinger 15.03.2010 18:40

Цитата:

Flash CS4
ага, вот оно в чем дело, а то я раньше на cs3 сидел и чего то ничего не получалось )))

dmitry bond 16.03.2010 04:10

ок , только эфект появился в левом верхнем углу , где надо параметры изменить , пойду экспериментировать

Добавлено через 7 минут
все нашел , только как то медленно все происходит , можно как нибудь изменить скорость :-)

Добавлено через 45 минут
еще один вопрос , как сделать адд чайлд на слое со скриптом?

AlexDesinger 16.03.2010 08:25

dmitry bond
в as3 не принято писать код в кадре на слоях, это типа плохой тон ипр. лабуда, которую придумали программисты, поэтому, т.к. скрипт - это часть программы, которую мы пишем, типа слушаем программистов и пишем код в *.as файле в классах.
Дальше, совет все-таки дойти до магазина со специфической литературой и купить книгу К. Мука, если лень, поискать ее в интернете, если совсем лень, я могу ее выслать в формате DJVU.
Еще совет прежде чем думать о том как что-то присоединить, полистать -
http://help.adobe.com/ru_RU/AS3LCR/F...0.0/index.html
там все есть.
Ну а если и это лень, то -
Код AS3:

this.addChild(myDisplayObject)

но дальше, все-равно придется листать =)

В вашем класссе вот эта строчка -
addEventListener(Event.ENTER_FRAME, anim);
говорит о том что действие происходит количество раз, равное значению fps на таймлайне, поэтому тут три варианта -
1. Руками изменить это значение (на вопрос где это я отвечать не буду =) )
2. Програмно изменить это значение (как - вопрос к on-line документации, по ссылке выше)
3. Переписать функцию и сделать ее с помощью setInterval либо Timer()
и то и то есть в хелпе с примерами, нужно только посидеть и разобраться с хелпом.

dmitry bond 16.03.2010 12:46

я не про это , у меня на слое выше файл png , и надо чтобы картинка была ниже , но она всегда над слоем с пнг , хотя слой со скриптом ниже

AlexDesinger 16.03.2010 14:30

потому что есть большая разница в добавлении картинки вучную и скриптом, добавьте в скрипте строку с тем, что должно быть ниже - раньше.

dmitry bond 16.03.2010 14:34

тогда такой вопрос , как добавить мувик с библиотеки на сцену?

AlexDesinger 16.03.2010 20:48

Код AS3:

import Mc;
var myMc:Mc = new Mc();
this.addChild(myMc);


dmitry bond 17.03.2010 04:13

Вы меня опять не понимаете , мне не надо импортировать класс , мне надо сделать addchild мувиклипа который находится в библиотеки , чтобы сначала на сцене появилась вода , а потом сверху мувик с пнг картинкой

etc 17.03.2010 09:05

Цитата:

Сообщение от dmitry bond (Сообщение 893600)
Вы меня опять не понимаете

Нет, это вы в очередной раз не поняли, что вам написали.

dmitry bond 17.03.2010 11:40

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

GentleFLASH 17.03.2010 16:01

dmitry bond, special for you - Как кодом добавить изображение из бибилиотеки на сцену

etc 17.03.2010 20:54

Цитата:

Сообщение от dmitry bond (Сообщение 893614)
я понял что это импортирование класса и создание его нового эксземпляра

Ну я же говорю — не поняли.

feelgood66 17.03.2010 23:30

кстати, строка "import Mc;" вообщем-то ненужна, а во всем остальном, делайте что вам говорят)) только не забудьте в поле линкаж напротив Вашего клипа поставить имя Mc..

dmitry bond 18.03.2010 01:28

я все понял , спасибо всем , но у меня возникли ошибки при наверном конфликте с предыдущим кодом :
1067: Implicit coercion of a value of type flash.display:BitmapData to an unrelated type flash.display:Bitmap 37line
1172: Definition myImage could not be found. 47line
1180: Call to a possibly undefined method myImage. 48line
вот весь код:
Код AS3:

package 
{
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.display.StageScaleMode;
        import flash.filters.DisplacementMapFilter;
        import flash.geom.Point;
 
        /**
        * ...
        * @author Ksoo
        */

        public class Main extends Sprite
        {
                [Embed(source = 'image.jpg')]
                private var waterImage:Class;
                private var water_mc:Bitmap;
                private var myfilters:Array;
                private var myBitmap:BitmapData;
                private var i:int;
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
                        filters = new Array();                       
                        stage.scaleMode = StageScaleMode.NO_SCALE;
 
                        addEventListener(Event.ENTER_FRAME, anim);
                        myBitmap = new BitmapData(1600,1200,false,0);
                        var pt:Point = new Point(0,0);
                        var mpoint :Point = new Point(0,0);
                        var myDispl:DisplacementMapFilter = new DisplacementMapFilter(myBitmap, mpoint, 1, 2, 10, 50);
                        water_mc = new waterImage();
                        myfilters = new Array();
                        myfilters.push(myDispl);
                        water_mc.filters = myfilters;
                        addChild(water_mc);
                        i = 1;
            import myImage;
            var myImg:BitmapData = new myImage(0, 0) as BitmapData;
            var myBitmap:Bitmap = new Bitmap( myImg );
 
 
            addChild( myBitmap );
                }
 
                private function anim(e:Event):void {
                        var filterList:Array = water_mc.filters;
                        var offset:Array;
                        offset = new Array();
                        offset.push(new Point(0, 0));
                        offset.push(new Point(i,i/4));
                        myBitmap.perlinNoise(50, 5, 2, 50, true, false, 7, true, offset);
                        //myBitmap.perlinNoise(
                        filterList.mapBitmap = myBitmap;
                        water_mc.filters = filterList;
                        i++;
                }
 
        }
 
}

почему произошли ошибки понять не могу , помагите пожалуйста

etc 18.03.2010 08:05

dmitry bond, вы когда уже думать и понимать то, что вы пишете, начнете?
Тексты ошибок для вас некая загадочная надпись на неизвестном вам языке или что?

Я не понимаю, насколько нужно не любить себя и быть настолько ленивым, чтобы третий день ничего не делая сидеть на жопе, канючить по строчке кода, при этом даже пальцем пошевелить в разрешении возникших проблем вломы. Кровососы, епты.

dmitry bond 18.03.2010 13:04

я не понимаю значение ошибки , и не могу понят что можно сделать

AlexDesinger 18.03.2010 13:26

etc
Не слишком ли грубо, ну не понимает человек что ему сделать, зачем же так с ним? Я вот, тоже, например,в свое время ничего не мог сделать, не смотря на то, что ночи на пролет сидел и пытался понять чток чему, пока кто-то на форуме не напишет пару строк в помощь =)

dmitry bond
число перед словом "line" означает в какой строчке, по мнению компилятора ошибка, сосредоточьтесь на этих строках, проанализируйте, что вы до этого изменили, если нужно откатитесь назад, и попытайтесь понять что именно не так, а вот когда вы поймете в чем именно у вас ошибка в какой строке и по какой причине, и попытавшись их исправить, потерпите неудачу, то задавайте здесь вопрос более конкретно. Так вам быстрее помогут.

dmitry bond 18.03.2010 13:38

alex , спасибо за совет , пойду думать

GentleFLASH 18.03.2010 14:00

etc прав. Человеку уже и так все написали, что он просил, даже книгу сказали какую и где можно достать. Возьми в руки и прочитай от корки до корки - таких нубских вопросов хоть не будет. А то спрашивает, как будто первый раз сел. Так вообще то люди нормальные вначале разбираются хотя бы по туториалам что к чему, а потом уже на форуме людей спрашивают. Даже от адоба идет документация и даже пошаговый рассказ как устроен ActionScript3, причем на русском языке, бесплатно. В чем проблема сходить к первоисточнику и у него узнать все как есть?
P.S.: там же будет сказано, что никто не пихает import внутри тела класса.

dmitry bond 18.03.2010 14:04

спасибо большое , оказывается ошибка была в том что я класс изображение назвал с маленькой буквы ,а в коде с большой

AlexDesinger 18.03.2010 17:09

GentleFLASH
Я по себе сужу и еще помню как со мной здесь нянчились и как объясняли очевидные для программистов вещи и как долго я втыкал что происходит, правда до книжки К.Мука я добрался так же как до help от Adobe на русском, но вся проблема в том, что не все, кто включает flash - программисты, среди них много дизайнеров, аниматоров и художников, некоторым из них нужно помогать, для того, чтобы они не теряли тягу к прекрасному - к flash, например как я =)

GentleFLASH 18.03.2010 17:48

AlexDesinger, помогать нужно, это само собой ;) Только изучать такие вещи как AS3 все же нужно начинать не сразу с обращения на форум, а хотя бы не полениться прочитать базовые понятия: переменная, функция, класс, пакет ну и хотя бы в общих чертах представлять, что есть какие то там события. Разве сложно это? Не думаю что совсем далекому от программинга человеку это будет сложно прочесть.

Для тех, кто совсем не в курсе где первоисточник то вот:
Введение в ActionScript 3.0 на русском
Документация по AS3 на русском

Потом, когда в раздел AS3 на flasher.ru заходим, то для кого собственно первые пять тем сверху постоянно висят, разве не для начинающих? В частности "ActionScript 3 с нуля", по-моему название говорит само за себя. Вывод - новичкам влом читать.

etc 18.03.2010 19:37

Цитата:

Сообщение от AlexDesinger (Сообщение 893978)
некоторым из них нужно помогать

Угу, делать за них их же работу, за которую они получают деньги. Вперед!


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

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