Перейти к содержимому



Добавить обьект в массив

#1 Banderas
Banderas
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1
0

Обновлено 16 мая 2010 - 00:15  Отправлено 11 мая 2010 - 19:02

Суть проблемы заключается в том, что бы занести обьект с его свойствами в массив, одновременно переименовывая его.
var c:Shape = new Shape();
c.graphics.beginFill(000000);
c.graphics.drawCircle(0,0,15);
c.graphics.endFill();
c.x = mouseX;
c.y = mouseY;
Num += 1;
mas.push(this+Num);
this - это сам обьект, в данном случае "с". Нужно что бы в массив заносились данные в виде с1, с2, с3, ... Как правильно записать? При таком выполнении компилятор выдаёт ошибку:

TypeError: Error #1010: Термин не определен и не имеет свойств.
at Untitled_fla::MainTimeline/EnterF()


Кому интересно - весь код:
var mas:Array = new Array();
var Num:int = 0;
var c:Shape = new Shape();
	c.graphics.beginFill(000000);
	c.graphics.drawCircle(0,0,15);
	c.graphics.endFill();
addEventListener(Event.ENTER_FRAME, EnterF);
function EnterF(event:Event):void
{
	c.x = mouseX;
	c.y = mouseY;
	Num += 1;
	mas.push(this+Num);
	for (var i:int = mas.length; i > 0; i--) {
		mas[i].alpha -= 0.1;
	}
}
addChild(c);

Флешка должна работать так: за курсором тянутся шарики, чем дальше от курсора, тем меньше их прозрачность.

 

 

  • 0

I'm web-developer 

Magento one love!



#2 Renovatio
Renovatio
  • Неактивные
  • 209 сообщений
  • Репутация: 5

Отправлено 12 мая 2010 - 00:34

Banderas, вы хоть отдыхаете от флеша?
Давайте разбирать.
Массив проще создавать с помощью литерала:
var mas:Array = [];
В функции EnterF вы приращиваете num, но нового экземпляра не создаете! Он создается у вас один раз.
А если координаты задать как
c.x = mouseX;
	c.y = mouseY;
то у вас один круг наложится на другой, нужно чтобы координата зависила от num
graphics.beginFill(000000);
это ошибка нужно
graphics.beginFill(0x000000);
или
graphics.beginFill(0);
переменные принято именовать со сточной буквы:
var num:int = 0;

Но, чтобы не быть голословным, приведу и я свой код, правда, у меня тоже не получилось выстроить шарики. Может, кто-то найдет ошибку:
var mas:Array=[];
var canvas:Sprite;
var alph:int=1;
init();
function init():void {
	Mouse.hide();
	canvas=new Sprite();
	addChild(canvas);
	for (var i:int=0; i<4; i++) {
		var cir=drawCir();
		mas.push(cir);
	}
	for (var f:int=0; f<mas.length; f++) {
		mas[f].x=f*10;
		mas[f].y=f*10;
		mas[f].alpha=alph;
		alph-=0.1;
		canvas.addChild(mas[f]);
	}
}
function drawCir():Sprite {
	var c:Sprite = new Sprite();
	c.graphics.beginFill(0);
	c.graphics.drawCircle(0,0,10);
	c.graphics.endFill();
	return c;
}
addEventListener(Event.ENTER_FRAME, UPD);
function UPD(e:Event):void {
	canvas.x=mouseX;
	canvas.y=mouseY;
}
Писалось под музыку: Chevelle
  • 0

#3 Banderas
Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 14 мая 2010 - 16:49

Я уже забыл об этой проблеме... Не ищу ничего))) Постараюсь на днях узнать как это делать.
  • 0

I'm web-developer 

Magento one love!



#4 Renovatio
Renovatio
  • Неактивные
  • 209 сообщений
  • Репутация: 5

Отправлено 15 мая 2010 - 11:52

В общем ошибка глупая и состояла в ошбке типа. Нужно
var alph:Number=1;
Вот рабочий код, получилось довольно симпотично!
var mas:Array=[];
var canvas:Sprite;
var alph:Number=1;
init();
function init():void {
	Mouse.hide();
	canvas=new Sprite();
	addChild(canvas);
	for (var i:int=0; i<40; i++) {
		var cir:*=drawCir();
		mas.push(cir);
		//trace("cir "+i+" created");
	}
	position();
	test();
}
function drawCir():Sprite {
	var c:Sprite = new Sprite();
	c.graphics.beginFill(0);
	c.graphics.drawCircle(0,0,10);
	c.graphics.endFill();
	return c;
}
function position():void {
	for (var f:int=0; f<mas.length; f++) {
		canvas.addChild(mas[f]);
		mas[f].x=Math.random()*200;
		mas[f].y=Math.random()*200;
		mas[f].alpha=alph;
		alph-=0.02;
		trace(canvas.numChildren);
	}
}
addEventListener(Event.ENTER_FRAME, UPD);
function UPD(e:Event):void {
	canvas.x=mouseX;
	canvas.y=mouseY;
}
function test():void {
	for (var i:String in mas) {
		trace(mas[i]);
	}
}

  • 0

#5 ZiTosS
ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 15 мая 2010 - 12:22

Renovatio, полезно было бы увидеть комментарии для кода выше.
  • 0

#6 Renovatio
Renovatio
  • Неактивные
  • 209 сообщений
  • Репутация: 5

Отправлено 15 мая 2010 - 12:32

Ааааа, так там же все просто!!!
var mas:Array=[];
var canvas:Sprite;
var alph:Number=1;
init();
function init():void {
	Mouse.hide();//прячем мышь
	canvas=new Sprite();
	addChild(canvas);//это спрайтовый контейнер, в котором будем рисовать шары
	for (var i:int=0; i<40; i++) {//их будет 40
		var cir:Sprite=drawCir();//рисуем
		mas.push(cir);//заносим в массив
	}
	position();//рандомно позиционируем
}
function drawCir():Sprite {
	var c:Sprite = new Sprite();
	c.graphics.beginFill(0);
	c.graphics.drawCircle(0,0,10);
	c.graphics.endFill();
	return c;
}
function position():void {
	for (var f:int=0; f<mas.length; f++) {
		canvas.addChild(mas[f]);
		mas[f].x=Math.random()*200;
		mas[f].y=Math.random()*200;
		mas[f].alpha=alph;
		alph-=0.02;
	}
}
addEventListener(Event.ENTER_FRAME, UPD);//меняем координаты при движении мыши
function UPD(e:Event):void {
	canvas.x=mouseX;
	canvas.y=mouseY;
}

  • 0

#7 Banderas
Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 15 мая 2010 - 22:54

2*Renovatio* немного не то получилось что хотел... мне надо сделать хвост за мышкой, а не рандомно вывести 40 кружков :(
Вот то, что мне нужно было _http://demiart.ru/forum/index.php?showtopic=109102
  • 0

I'm web-developer 

Magento one love!



#8 Renovatio
Renovatio
  • Неактивные
  • 209 сообщений
  • Репутация: 5

Отправлено 16 мая 2010 - 00:04

2*Renovatio* немного не то получилось что хотел... мне надо сделать хвост за мышкой, а не рандомно вывести 40 кружков :(
Вот то, что мне нужно было _http://demiart.ru/forum/index.php?showtopic=109102


Ну так я же не цветочная фея, правильно??? Ничто не мешает вам изменить код так, чтобы все было удобно. Тем более что если у вас есть код того как это работает, зачем спрашивали????
  • 0

#9 Banderas
Banderas
    Topic Starter
  • Неактивные
  • 1 168 сообщений
  • Репутация: 1

Отправлено 16 мая 2010 - 00:15

2*Renovatio* этот урок я нашел 2 часа назад. Просто хотел сам реализовать такую фигню, вот и спросил.
  • 0

I'm web-developer 

Magento one love!



robot
robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
BLIK BLIK 1-й за Июль
Очков активности: 81 0 тем, 27 сообщений, 2 балла репутации
ТОП самых активных за этот месяц
  • Фотография Megoydagi
    #1

    Megoydagi (24ho.ru)
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография heisenberg
    #2

    heisenberg
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография Irina090
    #3

    Irina090
    Очков активности: 9 2 темы, 0 сообщений, 1 балл репутации

  • Фотография Уфолог Бова
    #4

    Уфолог Бова
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография Artos
    #5

    Artos
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография DeHuC_64
    #6

    DeHuC_64 (russiangreat.ru)
    Очков активности: 7.5 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #7

    BLIK
    Очков активности: 7.5 Вне конкурса за определение пользователя месяца

  • Фотография kartuzzz
    #8

    kartuzzz
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Фотография Totti
    #9

    Totti
    Очков активности: 6 0 тем, 4 сообщения, 1 балл репутации

  • Фотография Cpatoday
    #10

    Cpatoday
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru