Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.01.2017, 12:01
anda30 вне форума Посмотреть профиль Отправить личное сообщение для anda30 Найти все сообщения от anda30
  № 1  
Ответить с цитированием
anda30

Регистрация: Dec 2016
Сообщений: 35
По умолчанию Удаление МС со сцены

Всем привет
У меня есть задача:
На сцене должны появляться мувиклипы (МС), которыми я должен управлять(передвигать, менять цвет..).
Количество появляемых МС зависит от числа в "NumericStepper".
Если число 4 - появляется 4 МС, если 5 - еще один МС добавляется , если число 3 остается только 3 МС.
Я хотел сделать так: сначала все МС удаляются, а затем добавляются согласно заданного числа.
Добавление получилось, а удаление нет.
Подскажите, где прокол.
С уважением
Александр.
Вложения
Тип файла: zip Upravl_MC_test_4.zip (777.0 Кб, 58 просмотров)

Старый 20.01.2017, 14:43
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 2  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
А нельзя код и скрины сюда выложить?
__________________
There is no thing in this world that is not simple.

Старый 20.01.2017, 14:53
anda30 вне форума Посмотреть профиль Отправить личное сообщение для anda30 Найти все сообщения от anda30
  № 3  
Ответить с цитированием
anda30

Регистрация: Dec 2016
Сообщений: 35
Сейчас
Код AS3:
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.ui.Mouse;
import fl.controls.DataGrid;
import fl.controls.Button;
 
var i,k:int;
var Kol_Dachikov=1;
var Zvz:DisplayObject;
var arr:Array = new Array();
var txt:String="125";
var DvMouse:int=0;
var NDatch:int=0;
var str1:String;
 
// Создаем датчики 
function Sozd_Datcikov (){
for(i=0;i<Kol_Dachikov;i++)
 
	{
	var Zv:MovieClip = new zv;
	Zv.name="ss"+i;
	Zv.x=100+i*10;
	Zv.y=150+i*10;
	addChild(Zv);
	arr[i]=Zv.name;
	//trace(Zv);
	trace(arr[i]);
	trace(Zv.name);
	if(Zv.name==("ss"+i))
		{
			trace ("Name="+Zv.name);
		}	
	}
}
Sozd_Datcikov();
 
stage.addEventListener(MouseEvent.MOUSE_DOWN, DvigStart);
stage.addEventListener(MouseEvent.MOUSE_UP, DvigStop);
stage.addEventListener(MouseEvent.MOUSE_MOVE, MoveMouse);
KolDatch.addEventListener(Event.CHANGE, Kol_Datchikov);
 
function Kol_Datchikov (e:Event):void{
 
for(i=0;i<1;i++){
//	if(Zv.name==("ss"+i))
//	if (stage.contains("ss"+0))
	{
	//	removeChildAt(Zv); //Здесь я хочу удалять МС
	}
	}
	Kol_Dachikov=KolDatch.value;
	Sozd_Datcikov();
//Kol_Dachikov=8;
}
 
function MoveMouse (e:MouseEvent){
	if (DvMouse==1)
	{	
		NDatch=int(str1);
		for(i=0;i<5;i++){
		k=0;;
		}
	}
}
 
function DvigStart(e:MouseEvent){
	DvMouse=1;
	txt=e.target.name.toString();
	str1=txt.substr(0,2);
	if((e.target.name!=null)&&(str1=="ss"))
	{	e.target.startDrag();	
		txt=e.target.name.toString();
		str1=txt.substr(2);}
}
 
function DvigStop (e:MouseEvent){
	DvMouse=0;
	txt=e.target.name.toString();
	str1=txt.substr(0,2);
	if(str1=="ss")
		{e.target.stopDrag();}
}

Старый 20.01.2017, 15:00
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 4  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Вы создаёте Zv в этой функции
Код AS3:
function Sozd_Datcikov (){
for(i=0;i<Kol_Dachikov;i++)
 
	{
	var Zv:MovieClip = new zv;
	Zv.name="ss"+i;
	Zv.x=100+i*10;
	Zv.y=150+i*10;
	addChild(Zv);
	arr[i]=Zv.name;
	//trace(Zv);
	trace(arr[i]);
	trace(Zv.name);
	if(Zv.name==("ss"+i))
		{
			trace ("Name="+Zv.name);
		}	
	}
}
а пытаетесь обратиться к ней в этой
Код AS3:
function Kol_Datchikov (e:Event):void{
 
for(i=0;i<1;i++){
//	if(Zv.name==("ss"+i))
//	if (stage.contains("ss"+0))
	{
	//	removeChildAt(Zv); //Здесь я хочу удалять МС
	}
	}
	Kol_Dachikov=KolDatch.value;
	Sozd_Datcikov();
//Kol_Dachikov=8;
}
http://help.adobe.com/ru_RU/ActionSc...0204-7f54.html
__________________
There is no thing in this world that is not simple.

Старый 20.01.2017, 15:04
anda30 вне форума Посмотреть профиль Отправить личное сообщение для anda30 Найти все сообщения от anda30
  № 5  
Ответить с цитированием
anda30

Регистрация: Dec 2016
Сообщений: 35
Спасибо
С Вашего ответа я понял, что если МС создан в одной функции, то в другой я к нему обратиться не могу?
С уважением

Старый 20.01.2017, 15:07
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 6  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Ну, технически то он создан в памяти, а не в функции, а в функции просто хранится ссылка на него(переменная). Простое решение - объявить глобально массив, в который складывать все звёзды при создании и удалять оттуда при удалении.
__________________
There is no thing in this world that is not simple.

Старый 20.01.2017, 15:13
anda30 вне форума Посмотреть профиль Отправить личное сообщение для anda30 Найти все сообщения от anda30
  № 7  
Ответить с цитированием
anda30

Регистрация: Dec 2016
Сообщений: 35
Но когда я хочу его подвигать МС, я к нему обращаюсь по имени и двигаю его.
Так почему я не могу по имени удалить его ?

Старый 20.01.2017, 15:18
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 8  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Код AS3:
function MoveMouse (e:MouseEvent){
	if (DvMouse==1)
	{	
		NDatch=int(str1);
		for(i=0;i<5;i++){
		k=0;;
		}
	}
}
 
function DvigStart(e:MouseEvent){
	DvMouse=1;
	txt=e.target.name.toString();
	str1=txt.substr(0,2);
	if((e.target.name!=null)&&(str1=="ss"))
	{	e.target.startDrag();	
		txt=e.target.name.toString();
		str1=txt.substr(2);}
}
 
function DvigStop (e:MouseEvent){
	DvMouse=0;
	txt=e.target.name.toString();
	str1=txt.substr(0,2);
	if(str1=="ss")
		{e.target.stopDrag();}
}
Вы здесь ни разу не обращались к Zv.
__________________
There is no thing in this world that is not simple.

Старый 20.01.2017, 15:33
anda30 вне форума Посмотреть профиль Отправить личное сообщение для anda30 Найти все сообщения от anda30
  № 9  
Ответить с цитированием
anda30

Регистрация: Dec 2016
Сообщений: 35
Когда я МС присваиваю имя "ss+i", я ж могу по этому имени удалить его?
С уважением

Старый 20.01.2017, 15:59
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 10  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Зачем?
Код AS3:
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.ui.Mouse;
import fl.controls.DataGrid;
import fl.controls.Button;
 
var i,k:int;
var Kol_Dachikov=1;
var Zvz:DisplayObject;
var arr:Array = new Array();
var txt:String="125";
var DvMouse:int=0;
var NDatch:int=0;
var str1:String;
 
// Создаем датчики 
function Sozd_Datcikov (){
for(i=0;i<Kol_Dachikov;i++)
 
	{
	var Zv:MovieClip = new zv;
	Zv.name="ss"+i;
	Zv.x=100+i*10;
	Zv.y=150+i*10;
	addChild(Zv);
	arr.push(Zv);
	//trace(Zv);
	trace(arr[i]);
	trace(Zv.name);
	if(Zv.name==("ss"+i))
		{
			trace ("Name="+Zv.name);
		}	
	}
}
Sozd_Datcikov();
 
stage.addEventListener(MouseEvent.MOUSE_DOWN, DvigStart);
stage.addEventListener(MouseEvent.MOUSE_UP, DvigStop);
stage.addEventListener(MouseEvent.MOUSE_MOVE, MoveMouse);
KolDatch.addEventListener(Event.CHANGE, Kol_Datchikov);
 
function Kol_Datchikov (e:Event):void{
 
	while(arr.length)
	{	
		removeChild(arr[0]);
		arr.shift();
	}
 
	Kol_Dachikov=KolDatch.value;
	Sozd_Datcikov();
//Kol_Dachikov=8;
}
 
function MoveMouse (e:MouseEvent){
	if (DvMouse==1)
	{	
		NDatch=int(str1);
		for(i=0;i<5;i++){
		k=0;;
		}
	}
}
 
function DvigStart(e:MouseEvent){
	DvMouse=1;
	txt=e.target.name.toString();
	str1=txt.substr(0,2);
	if((e.target.name!=null)&&(str1=="ss"))
	{	e.target.startDrag();	
		txt=e.target.name.toString();
		str1=txt.substr(2);}
}
 
function DvigStop (e:MouseEvent){
	DvMouse=0;
	txt=e.target.name.toString();
	str1=txt.substr(0,2);
	if(str1=="ss")
		{e.target.stopDrag();}
}
P.S. Код - сплошная каша, столько лишних операций и переменных я ещё никогда не видел. Задача решается буквально в 10 строк.
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 20.01.2017 в 16:11.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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