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

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

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

Регистрация: Mar 2010
Сообщений: 30
По умолчанию Порядок распложения фильмов и экземпляров в стеке

привет! есть код:

Код AS1/AS2:
//---------
function createObjects(){//создаем объект
	iParent=contS; //контейнер пропал
        //iParent = _root; //зато так есть есть контейнер(см. ниже к чему это я)
	obj11=attachMovie("obj1","obj2",iParent.getNextHighestDepth());
	obj11._x=200;
	obj11._y=200;
	trace(obj11);
}
function initObjects(){
	createObjects();
}
//---------
function createContainer(){//создаем контейнер
	cont=attachMovie("contL","contS",_root.getNextHighestDepth());
	cont._x=100;
	cont._y=100;
}
function controlContainer(){//управление контейнером, двигаем его мышкой
	cont.onPress=function(){
		this.onEnterFrame = function(){
			this._x=_xmouse-(this._width/2);
		}
	}
	cont.onMouseUp=function(){
		this.onEnterFrame = function(){
			this._x=this._x;
		}
	}
}
function initConteiner(){
	createContainer();
	controlContainer();
}
//---------
function begin(){
	initConteiner();
	initObjects();
 
}
begin();
почему не получается засунуть объект в контейнер? и почему контейнер вообще исчез?

возможно ли, вообще поместить один мувик в другой, и что бы вновь помещенный мувик имел начало координат клипа куда его засунули, а не начало координат главной сцены?

хотелось бы без всяких заморочек так сделать и при перетягивании "коробочки", объект который внутри был статичен по отношении к клипу в котором он находится.

заранее извиняюсь, сложно описывать, очень устал.

--------
container.swf - iParent = contS;
container.swf(1) - iParent = _root;
Вложения
Тип файла: swf container.swf (1.0 Кб, 73 просмотров)
Тип файла: swf container (1).swf (1.0 Кб, 69 просмотров)

Старый 10.07.2010, 12:56
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS1/AS2:
function begin(){
	initConteiner();
	initObjects();
 
}
begin();
Никогда так не делай. реализация ужасная

Старый 10.07.2010, 13:17
Blackjack1616 вне форума Посмотреть профиль Отправить личное сообщение для Blackjack1616 Найти все сообщения от Blackjack1616
  № 3  
Ответить с цитированием
Blackjack1616

Регистрация: Mar 2010
Сообщений: 30
Цитата:
Сообщение от in4core Посмотреть сообщение

Никогда так не делай. реализация ужасная
Почему? Я в этой "теме" не давно.

Старый 10.07.2010, 13:40
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Ну как вам объснить проще почему. Вот например вы не ходите через колбасный цех с пере=ходом в хлебный, а потом обратно потому что все таки колбасу купить хотели, а не хлеб. Вот и тут так же, одна функция запускает вторую в которой запуска.тся 2 других , а в свою очередь две других запускают основную часть. Так не то что запутаться можно, так можно столько ошибок нагородить.

Вот смотри как пишется более менее норм реализация

Код AS1/AS2:
function main ( a,b,c,d) {
   if(a==b && c!=d) {
        d  = 20; }  
    else { 
     d= null }
    submain(d);
   }
function submain(a) {
    a==null ? _root._visible = false : _root.mc._visible = true;
   subsubmain(mc._visible);
}
function subsubmain (a) {  
   switch(a) {
   case 0: 
   trace("struct");
   break;
   case 1:
   trace("duck");
   break;
   }
}
 
main(3,4,5,6)
Тоесть 1 функция запускает другую и т.д. тоесть есть какой то эффект в запуске след функции. А не просто

Код AS1/AS2:
function func() {
  func1();
  func2();
}
Я думаю разница понятна, и учитесь писать на классах, это систематизирует ваш код


Последний раз редактировалось in4core; 10.07.2010 в 13:43.
Старый 10.07.2010, 22:18
Blackjack1616 вне форума Посмотреть профиль Отправить личное сообщение для Blackjack1616 Найти все сообщения от Blackjack1616
  № 5  
Ответить с цитированием
Blackjack1616

Регистрация: Mar 2010
Сообщений: 30
спасибо. буду с эти разбираться.

Старый 10.07.2010, 22:41
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Blackjack1616, у вас абсолютно нормальная схема, а in4core выдумывает.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 11.07.2010, 02:12
zurkis вне форума Посмотреть профиль Отправить личное сообщение для zurkis Найти все сообщения от zurkis
  № 7  
Ответить с цитированием
zurkis
 
Аватар для zurkis

Регистрация: Nov 2008
Адрес: Атланта
Сообщений: 1,271
in4core что за ужастный код?
__________________
Пока я жив, Вы горем обеспечены

Старый 11.07.2010, 12:21
Blackjack1616 вне форума Посмотреть профиль Отправить личное сообщение для Blackjack1616 Найти все сообщения от Blackjack1616
  № 8  
Ответить с цитированием
Blackjack1616

Регистрация: Mar 2010
Сообщений: 30
Так, значит, хорошо!

А что по вопросу темы? читал в книжке Колина Мука - так я не совсем понял этот механизм, с этими стеками, вложенностями.

я всегда делаю _root.getNextHighestDepth(), когда аттачу клип из библиотеки, но предполагаю, что можно делать как-то более организованно, как например в исходном коде одного из примеров на сайте http://www.metanetsoftware.com/technique.html/, но моего понимания не хватает для осознания этого механизма, да и языка не хватает.

Старый 11.07.2010, 13:30
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 9  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Если я понял правильно вы хотите заатачить сначала клип на главную временную шкалу, а потом зааттачить второй клип, в тот, что зааттачили на главную линейку, при этом внутренний клип, будет статичным. Может быть написал немного наоборот, думаю разберетесь
Код AS1/AS2:
var MC:MovieClip;
var cont:MovieClip;
var cx = 200;
var cy = 200;
 
function createObjects(a,b){
	MC = _root.attachMovie("obj1","obj2",_root.getNextHighestDepth(),{_x:a,_y:b});
        createContainer(cx/2,cy/2)
}
 
function createContainer(a,b){
	cont = MC.attachMovie("contL","contS",MC.getNextHighestDepth(),{_x:a,_y:b});
        controlContainer();
}
function controlContainer(){   // плохо писать функцию в функции
	cont.onPress=function(){
		this.onEnterFrame = function(){
			this._x=_xmouse-(this._width/2);
		}
	}
	cont.onMouseUp=function(){
		this.onEnterFrame = function(){
			this._x=this._x;
		}
	}
}
 
 
 
createObjects(cx,cy);

Старый 11.07.2010, 14:49
Blackjack1616 вне форума Посмотреть профиль Отправить личное сообщение для Blackjack1616 Найти все сообщения от Blackjack1616
  № 10  
Ответить с цитированием
Blackjack1616

Регистрация: Mar 2010
Сообщений: 30
Цитата:
Сообщение от in4core Посмотреть сообщение
Если я понял правильно вы хотите заатачить сначала клип на главную временную шкалу, а потом зааттачить второй клип, в тот, что зааттачили на главную линейку, при этом внутренний клип, будет статичным. Может быть написал немного наоборот, думаю разберетесь
спасибо. разобрался.

Код AS1/AS2:
 
var MC:MovieClip;
var cont:MovieClip;
var cx = 50;
var cy = 50;
 
function createObjects(a,b){
	MC = cont.attachMovie("obj1","obj2",cont.getNextHighestDepth(),{_x:a,_y:b});
}
 
function createContainer(a,b){
	cont = _root.attachMovie("contL","contS",_root.getNextHighestDepth(),{_x:a,_y:b});
	createObjects(cx,cy);
        controlContainer();
}
function controlContainer(){   // а что делать?...
	cont.onPress=function(){
		this.onEnterFrame = function(){
			this._x=_xmouse;
		}
	}
	cont.onMouseUp=function(){
		this.onEnterFrame = function(){
			this._x=this._x;
		}
	}
}
 
 
 
createContainer(cx,cy);
 
trace(MC);
trace(cont);


Последний раз редактировалось Blackjack1616; 11.07.2010 в 14:52.
Создать новую тему Ответ Часовой пояс GMT +4, время: 05:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
вложенность , контейнер , порядок расположения

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

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


 


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


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