|
|
|
|
|
для: cheops
(05.02.2012 в 21:25)
| | Спасибо, большое! Все удачно работает! | |
|
|
|
|
|
|
|
для: ADmexture
(05.02.2012 в 20:54)
| | Ну это конечно, только не забудьте вот эту строку исправить
>интересно, как можно организовать постепенное увеличение id на 1, наподобие id++;?
Конечно, id совершенно независим, более того, вы вместо id можете использовать два значения i и j, чтобы в любой момент точно знать с каким элементом в матрице работаете... этим собственные классы и хороши - вы можете делать с ними все, что угодно. | |
|
|
|
|
|
|
|
для: cheops
(05.02.2012 в 18:35)
| | До полной кучи автоматизации можно наверно еще добавить задаваемое количество строк и столбцов:
for(var i:int = 0; i < Strok; i++){
for(var j:int = 0; j < Stolb; j++){
// Вычисляем уникальный идентификатор
// от 0 до 11
id = i*4 + j;
// Координата X
mX = 10 + (10 + mWidth)*i;
// Координата Y
mY = 10 + (10 + mHeight)*j;
// Создаем элемент
item[id] = new photo(id, mX, mY, mWidth, mHeight);
// Добавляем элемент на канву
this.addChild(item[id]);
}
}
|
интересно, как можно организовать постепенное увеличение id на 1, наподобие id++;? | |
|
|
|
|
|
|
|
для: ADmexture
(05.02.2012 в 18:30)
| | А так и обращаетесь
import gallery.photogallery;
gallery.photogallery.методы_класса();
| или можно создать объект при помощи new(), но смысл в том, чтобы во временной шкале кода было бы поменьше, а вот в отдельных AS-файлах бы его было бы побольше... | |
|
|
|
|
|
|
|
для: cheops
(05.02.2012 в 17:50)
| | А как мы обращаемся из самого *.fla файла к этим классам?
должно же быть что то вроде этого:
import gallery.photogallery;
import gallery.photo;
var newRaw:photo = new photo();
|
или можно проект выложить? Там нагляднее будет =) | |
|
|
|
|
|
|
| При создании своих собственных элементов управления в стиле ActionScript 3.0, они оформляются в виде отдельного класса, пусть такой класс называется photo
package gallery {
import flash.display.*;
import flash.events.*;
public class photo extends Sprite {
// Номер элемента
private var id:int = 0;
// Конструктор
public function photo(
id:int,
x:int,
y:int,
width:int,
height:int,
color:uint = 0x0000FF):void
{
// Уникальный номер элемента
this.id = id;
// Параметры прямоугольника
// Рамка
this.graphics.lineStyle(1);
// Цвет
this.graphics.beginFill(color);
// Отрисовываем прямоугольник
this.graphics.drawRect(x, y, width, height);
// Вешаем обработчики событий
this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
this.addEventListener(MouseEvent.CLICK, onMouseClick);
}
// Возвращаем номер элемента
public function getID():int{
return this.id;
}
// Обработчик MOUSE_OVER
public function onMouseOver(e:MouseEvent):void {
trace("Событие MOUSE_OVER ", this.getID());
}
// Обработчик MOUSE_CLICK
public function onMouseClick(e:MouseEvent):void {
trace("Событие MOUSE_CLICK", this.getID());
}
}
}
| Тогда, чтобы создать 12 элементов по 4 штуки в ряду нам достаточно организовать вложенный цикл, который будет их создавать
package gallery{
import flash.display.*;
public class photogallery extends Sprite {
// Конструктор
public function photogallery():void{
// Высота
var mHeight:int = 70;
// Ширина
var mWidth:int = 50;
// В цикле создаем 4 x 3 объекта photo
var item:Array = new Array();
// Уникальный идентификатор элемента
var id:int = 0;
// Координата X
var mX:int = 0;
// Координата Y
var mY:int = 0;
// Создаем 12 динамических элементов
for(var i:int = 0; i < 4; i++){
for(var j:int = 0; j < 3; j++){
// Вычисляем уникальный идентификатор
// от 0 до 11
id = i*4 + j;
// Координата X
mX = 10 + (10 + mWidth)*i;
// Координата Y
mY = 10 + (10 + mHeight)*j;
// Создаем элемент
item[id] = new photo(id, mX, mY, mWidth, mHeight);
// Добавляем элемент на канву
this.addChild(item[id]);
}
}
}
}
}
| Более подробно о том, как строить проект можно почитать в разделе Примеры скриптов на Action Script 3, для которого я подготовил отдельную статью с подробными комментариями, где, что должно лежать. Если хотите, могу выложить сам проект, но у меня Flash CS5 (скорее всего для более старых версий Flash им воспользоваться не удастся). | |
|
|
|
|