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

Сервис обмена электронных валют


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

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 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


#2 Renovatio

Renovatio
  • Пользователь
  • 187 сообщений
  • Репутация: 4

Отправлено 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


#4 Renovatio

Renovatio
  • Пользователь
  • 187 сообщений
  • Репутация: 4

Отправлено 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
  • Пользователь
  • 187 сообщений
  • Репутация: 4

Отправлено 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


#8 Renovatio

Renovatio
  • Пользователь
  • 187 сообщений
  • Репутация: 4

Отправлено 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


robot

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


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