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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.12.2009, 13:56
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 21  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
звучит убедительно, будем пробовать применять, благодарю

Цитата:
Сообщение от dimarik Посмотреть сообщение
Храните каждую логически законченную анимацию в отдельном библиотечном символе символе.
да, такой вариант тоже рассматривался, вполне пригодно
__________________
low +


Последний раз редактировалось Jewelz; 08.12.2009 в 13:59.
Старый 09.12.2009, 00:56
Sergko вне форума Посмотреть профиль Отправить личное сообщение для Sergko Найти все сообщения от Sergko
  № 22  
Ответить с цитированием
Sergko

Регистрация: Dec 2009
Сообщений: 2
Спасибо, все попробовал, но видимо я чего-то не понимаю. Недавно осваивать начал.
Привожу код, помогите пожалуйста
Код AS3:
package Dial{
	import flash.display.*;
	import flash.events.*;
	import Dial.*;
	public class Dial extends MovieClip{
		var _sifri:Array = new Array();
		var _first:Array = new Array();
		var _second:Array = new Array();
		var _third:Array = new Array();
		var btn1:button;
		var btn2:button;
		var btn3:button;
		public function Dial() {
			sifri();
			repeat();
		}
		public function FclickListener(e:MouseEvent):void{
			removeChild(btn1);
			removeChild(btn2);
			removeChild(btn3);
			e.updateAfterEvent();
		}
		public function sifri() {
			var textt1:text1 = new text1();
			var textt2:text2 = new text2();
			var textt3:text3 = new text3();
			var contt1:cont1 = new cont1();
			var moviet1:movie1 = new movie1();
			_first.unshift(textt1,contt1,moviet1);
			_second.unshift(textt2,contt1,moviet1);
			_third.unshift(textt3,contt1,moviet1);
			_sifri.unshift(_first,_second,_third);
		}
		public function repeat() {
			sifri();
			addChild(btn1 = new button(_sifri[0][0],_sifri[0][1],_sifri[0][2]));
			btn1.x = 300;
			btn1.y = 300;
			addChild(btn2 = new button(_sifri[1][0],_sifri[1][1],_sifri[1][2]));
			btn2.x = 300;
			btn2.y = 250;
			addChild(btn3 = new button(_sifri[2][0],_sifri[2][1],_sifri[2][2]));
			btn3.x = 300;
			btn3.y = 200;
			btn1.addEventListener(MouseEvent.CLICK,FclickListener)
			btn2.addEventListener(MouseEvent.CLICK,FclickListener)
			btn3.addEventListener(MouseEvent.CLICK,FclickListener)
		}
	}
}
Это код главного класса, вот код собственно кнопки
Код AS3:
package Dial{
	import flash.display.*;
	import flash.events.*;
	import Dial.*;
	public class button extends MovieClip{
		var textII:MovieClip; 
		var contII:MovieClip;
		var movieII:MovieClip;
		public function button(textI:MovieClip,contI:MovieClip,movieI:MovieClip) {
			addEventListener(MouseEvent.ROLL_OVER,overListener);
			addEventListener(MouseEvent.ROLL_OUT,outListener);
			addEventListener(MouseEvent.CLICK,clickListener);
			settextII(textI);
			setcontII(contI);
			setmovieII(movieI);
			addChild(textII);
			textII.x = 50;
			textII.y = 9;
		}
		public function overListener(e:MouseEvent):void{
			stage.addChild(contII);
			contII.play();
			contII.x = 100;
			contII.y = 100;
		}
		public function outListener(e:MouseEvent):void{
			stage.removeChild(contII);
		}
		public function clickListener(e:MouseEvent):void{
			stage.removeChild(contII);
			stage.addChild(movieII);
			movieII.play();
			movieII.x = 300;
			movieII.y = 0;
		}public function gettextII():MovieClip{
			return textII;
		}
		public function settextII(newtext:MovieClip):void{
			textII=newtext;
		}
		public function getcontII():MovieClip{
			return contII;
		}
		public function setcontII(newcont:MovieClip):void{
			contII=newcont;
		}
		public function getmovieII():MovieClip{
			return movieII;
		}
		public function setmovieII(newmovie:MovieClip):void{
			movieII=newmovie;
		}
 
	}
}
Я уверен, что код громоздкий, и если кто подскажет, как улучшить буду благодарен. Но мой основной вопрос: как видно из кода при нажатии на любую кнопку происходит запуск мувика movie1, как мне сделать так, что конкретно написать, чтобы при окончании мувика снова вызывалась функция repeat в главном классе, а соответственно кнопки опять появлялись.

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

Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
Код AS3:
public function clickListener(e:MouseEvent):void
{
			stage.removeChild(contII);
			stage.addChild(movieII);
			movieII.play();
                                 movieII.addEventListener(Event.ENTER_FRAME, enterFrameListener);
			movieII.x = 300;
			movieII.y = 0;
 
function enterFrameListener(e:Event):void
{
if(movieII.currentFrame==movieII.totalFrames)
{
   movieII.removeEventListener(Event.ENTER_FRAME, enterFrameListener);
   Dial.repeat();
 
}
}

Метод экземпляра класса Dial repeat() должен быть определен, как статический, либо в классе Dial должно быть определено открытое статическое св-во, со ссылкой на экземпляр класса Dial, в противном случае невозможно будет вызвать метод repeat() экз.класса Dial из кода в классе button (имена классов задают с большой буквы) без создания самого экземпляра.

Добавлено через 23 минуты
Хотя можно получить ссылку из класса Button на экземпляр класса Dial, следующим образом (так как Вы добавляете экземпляры классов Button в список отображения класса Dial)

this.parent
Код AS3:
public function clickListener(e:MouseEvent):void
{
			stage.removeChild(contII);
			stage.addChild(movieII);
			movieII.play();
                                 movieII.addEventListener(Event.ENTER_FRAME, enterFrameListener);
			movieII.x = 300;
			movieII.y = 0;
 
function enterFrameListener(e:Event):void
{
if(movieII.currentFrame==movieII.totalFrames)
{
   movieII.removeEventListener(Event.ENTER_FRAME, enterFrameListener);
   parent.repeat();
 
}
}
}
__________________
04.08 1516 23:42


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

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

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


 


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


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