Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Выкладываю OpenSource своего компонента! (http://www.flasher.ru/forum/showthread.php?t=131698)

sabarn 26.10.2009 17:08

Выкладываю OpenSource своего компонента!
 
Вложений: 2
Написал компонент-просмотрщик изображений.
Выкладываю его в надежде на то, что он Вам понравится. Пишите замечания, возможные огрехи.
Флэшер я с опытом примерно год, поэтому данная работа является и моим коэффициентом роста, так сказать.
В данный момент пишу свою онлайн-игру. Ноутбук сломался, а пока он в ремонте решил так развлечься.

Изображения, которые нужно просмотреть записываются в файле .xml, который передаётся данному компоненту.
Рассмотрим как следует обращаться к этому компоненту:
Код AS3:

import ImgXmlScroll; private var myComponent:ImgXmlScroll = new ImgXmlScroll("files.xml", "mask.png", 1.4, 5, 100, 350);

В данной строке:
"files.xml" - путь к файлу .xml, в котором лежат имена файлов и их описания. обязательный параметр.
"mask.png" - путь к файлу .png, который служит защитной маской изображений. если маска не обязательна, можно задать этот параметр так "". Или не писать его вообще, если следующие параметры тоже не нужно менять
1.4 - отношение длины изображения к его высоте(служит для их корректировки). Можно не задавать. По умолчанию равен 1,4
5 - количество отображаемых картинок на экране в полосе прокрутки. По умолчанию равно 4
100 - ширина отображаемых картинок в полосе прокрутки. По умолчанию равно 100
350 - ширина изображения в окне просмотра. По умолчанию равно 350

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

addChild(myComponent); // 
myComponent.y = 60; //поменять местоположение по оси "y"
myComponent.x = 100; //поменять местоположение по оси "x"
myComponent.picHeight = 100; //поменять ширину изображений в строке прокрутки
myComponent.picWidth = 50; //поменять высоту изображений в строке прокрутки
myComponent.imageWidth = 200; //поменять ширину изображения в окне просмотра
myComponent.imageHeight = 150; //поменять ширину изображения в окне просмотра
myComponent.picCount = 10;//поменять количество отображаемых на экране изображений в полосе прокрутки

Важно: Параметры меняются, если их новые значения входят в допустимые пределы. Эти пределы можно посмотреть в нижеприведённых константах.

При настройке компонента можно пользоваться константами:
myComponent.KOEFFDEFAULT - отношение по умолчанию ширины к высоте. равно 1.4;
myComponent.IMAGEMINX - минимальное значение ширины изображения в окне просмотра. равно 200;
myComponent.IMAGEMINY - минимальное значение высоты изображения в окне просмотра. равно 142.85714285714286;
myComponent.IMAGEMAXX - максимальное значение ширины изображения в окне просмотра. равно 600;
myComponent.IMAGEMAXY - максимальное значение высоты изображения в окне просмотра. равно 428.5714285714286;
myComponent.IMAGEDEFAULTX - значение по умолчанию ширины изображения в окне просмотра. равно 350;
myComponent.IMAGEDEFAULTY - значение по умолчанию высоты изображения в окне просмотра. равно 250
myComponent.PICMINX - минимальное значение ширины изображения в полосе прокрутки. равно 20;
myComponent.PICMINY - минимальное значение высоты изображения в полосе прокрутки. равно 14.285714285714286;
myComponent.PICMAXX - максимальное значение ширины изображения в полосе прокрутки. равно 200;
myComponent.PICMAXY - максимальное значение высоты изображения в полосе прокрутки. равно 142.85714285714286;
myComponent.PICDEFAULTX - значение по умолчанию ширины изображения в полосе прокрутки. равно 100;
myComponent.PICDEFAULTY - значение по умолчанию высоты изображения в полосе прокрутки. равно 71.42857142857143;
myComponent.PICCOUNTMIN - минимальное количество отображаемых картинок на экране в полосе прокрутки. равно 1;
myComponent.PICCOUNTMAX - максимальное количество отображаемых картинок на экране в полосе прокрутки. равно 20;
myComponent.PICCOUNTDEFAULT - значение по умолчанию количества отображаемых картинок на экране в полосе прокрутки. равно 4;

dimarik 26.10.2009 17:12

Все в одном флаконе. Браво! Шаг вправо, шаг влево - расстрел.

sabarn 26.10.2009 17:15

Шаг вправо, шаг влево - расстрел. - это конечно красиво звучит, но допустимые границы сделаны для того чтоб изображение было ВИДИМЫМ на экране. Чтоб микроскопическим не было и в десять экранов тоже

Psycho Tiger 26.10.2009 17:17

Дему бы увидеть "вживую".

sabarn 26.10.2009 17:27

Сейчас выложу дему

sabarn 26.10.2009 17:33

Вложений: 1
вот демка

Котяра 26.10.2009 18:28

Я бы не стал называть это "компонентом" — это скорее некая тестовая реализация некой галереи)

Psycho Tiger 26.10.2009 18:30

В целом забавная хрень, наверно будет пользоваться популярностью у новичков.
Как заметил dimarik - полное отсутствие ООП, "правила хорошего тона" в коде отсутствуют (вызов super(), this используется где-то, а где-то не используется и тому подобное), нет комментариев к паблик методам, public const вроде
Код AS3:

public const IMAGEMINX = 200;

почему то не static...

sabarn 26.10.2009 18:34

Psycho Tiger, конечно подобные замечания имеют смысл. Но хочу оговорить что упор ставился на алгоритмы. и сделано за три дня.
Коменты отсутствуют, так как названия переменных говорят за себя сами.
Буду очень признателен, если скажете в чём заключается отсутствие ООП

Котяра, всё таки это компонент, так как реализован именно как модуль

P.s. извиняюсь, но немного странно получать замечания об отсутствии в коде ООП от человека, который спрашивал "а зачем нужны интерфейсы?"

SamFR 27.10.2009 04:39

Про отсутствие ООП – наверное, имелось в виду то, что логично было бы разбить код на несколько классов (как минимум, вынести в отдельный класс работу с данными). А у вас всё в одном, что очень серьёзно затрудняет понимание кода и его дальнейшее расширение (наследование). Вернее сказать, в том виде, в каком он сейчас, ваш класс абсолютно нерасширяем, а это не есть хорошо.

Плюс – непонятные имена переменных (bzhnc, например), кое-где отсутствует типизация. Ещё я не увидел геттеров. Сеттеры есть, а если я захочу сделать picHeight += 20?
Также не радуют обработчики событий в 100 с лишним строк (myEnterFrame). Как правило, такие методы можно разбить на несколько более простых, что существенно облегчит понимание и отладку.

А насчёт комментариев – может быть, сейчас для вас имена переменных и говорят сами за себя. Мне же, например, понять, что есть arrUil01, очень сложно. И вам через полгода, уверен, будет не менее сложно. Поэтому комментировать очень важно, особенно если речь идёт о совместной разработке либо опубликовании кода. Причём комментировать как можно подробнее, особенно интерфейсную часть. Хоть и уходит на это чуть ли не треть от общего времени :) Неплохой стандарт задаёт ASDoc, к тому же, можно автоматом доки сгенерить, а это уже приятно.

В общем, это действительно пока не компонент. Прототип компонента – да, но работы ещё очень много.

Только не обижайтесь, пожалуйста, на критические отзывы – вы же сами попросили)


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

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