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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.10.2008, 20:59
radiofanat вне форума Посмотреть профиль Отправить личное сообщение для radiofanat Найти все сообщения от radiofanat
  № 11  
Ответить с цитированием
radiofanat

Регистрация: Oct 2008
Сообщений: 14
Заработало, спасибо. Дальше я уже разберусь.

Вот код для загрузки 12 кртинок в 2 ряда

Код:
for (var i=1; i<=6; i++) {
this.createEmptyMovieClip("image_mc" + i, i);
this["image_mc" + i].loadMovie("main_img/"+i+".jpg");
this["image_mc" + i]._y = 180;
this["image_mc" + i]._x = 12 + i*107
}

for (var i=7; i<=12; i++) {
this.createEmptyMovieClip("image_mc" + i, i);
this["image_mc" + i]._y = 288;
this["image_mc" + i].loadMovie("main_img/"+i+".jpg");
this["image_mc" + i]._x = 12+(i-6)*107;

}
если есть замечания или предложения по улучшению буду очень рад.

Да иеще например как достать эти клипы
Код:
image_mc1.onRollOut = function (){
}
не работает


Последний раз редактировалось radiofanat; 06.10.2008 в 22:04.
Старый 07.10.2008, 00:59
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 12  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Да, замечания конечно есть))
Во-первых, запомните навсегда, что есть такое понятие как переменная, хранящая ссылку на объект. В данном примере this["image_mc" + i] - это клип. При его создании можно завести временную переменную, которая внутри цикла будет указывать на этот клип. Вот так:
Код:
for (var i=1; i<=6; i++) {
    var mc:MovieClip = this.createEmptyMovieClip("image_mc" + i, i);
    mc.loadMovie("main_img/"+i+".jpg");
    mc._y = 180;
    mc._x = 12 + i*107;
    mc.onRollOver = clipOver;
}
При этом процессор не должен будет каждый раз разыскивать ваш клип по хитрому адресу, как сейчас, а читабельность кода изрядно улучшится.
Во-вторых, и не так существенно, но можно ведь обойтись и одним циклом.
Например, так:
Код:
var cols:Number = 7 // нужное количество столбцов
var hspace:Number = 10 // горизонтальный просвет между картинками
var vspace:Number = 10 // вертикальный просвет между картинками
var img_width:Number = 180 // ширина картинок
var img_height:Number = 107 // высота картинок
////
for (var i=1; i<=6; i++) {
    var mc:MovieClip = this.createEmptyMovieClip("image_mc" + i, i);
    mc.loadMovie("main_img/"+i+".jpg");
    var horder:Number = (i+cols)%cols;
    horder = horder==0 ? cols-1 : horder-1
    var vorder:Number = Math.ceil(i/cols)-1;
    mc._x = horder*(img_width + hspace);
    mc._y = vorder*(img_height + vspace);
    mc.onRollOver = clipOver;
}
И забыл сказать, что обработчик кнопочных событий Вы сможете повесить только после загрузки изображения.
Как Вам уже правильно сказали, loadMovie нельзя использовать в таких случаях, когда с загружаемым изображением необходимо чтото сделать, т.е. практически никогда нельзя))))) Используют MovieClipLoader и все его замечательные события, позволяющие отслеживать процесс загрузки и ее окончание.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 07.10.2008 в 01:28.
Старый 07.10.2008, 01:10
radiofanat вне форума Посмотреть профиль Отправить личное сообщение для radiofanat Найти все сообщения от radiofanat
  № 13  
Ответить с цитированием
radiofanat

Регистрация: Oct 2008
Сообщений: 14
Спасибо, очень интересно. Но mc.onRollOver все равно не работает даже курсор при наведении не меняется.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вы читаете быстрее чем я пишу)))
Нижний абзац плиз.
__________________
Reality.getBounds(this);

Старый 07.10.2008, 01:20
radiofanat вне форума Посмотреть профиль Отправить личное сообщение для radiofanat Найти все сообщения от radiofanat
  № 15  
Ответить с цитированием
radiofanat

Регистрация: Oct 2008
Сообщений: 14
Понял, пошел читать про MovieClipLoader.

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

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
Цитата:
Сообщение от radiofanat Посмотреть сообщение
Код который мне дали выдает точно такой результат что и мой код. Вопрос в том что если так нельзя делать подскажите как.
Он неможет выдавать тоже самое, т.к. в вашем коде пока работает цикл, каждый раз создается клип на одной и той же глубине!
__________________
Убейте меня!

Старый 07.10.2008, 14:57
radiofanat вне форума Посмотреть профиль Отправить личное сообщение для radiofanat Найти все сообщения от radiofanat
  № 17  
Ответить с цитированием
radiofanat

Регистрация: Oct 2008
Сообщений: 14
Цитата:
Сообщение от джонатан Посмотреть сообщение
Он неможет выдавать тоже самое, т.к. в вашем коде пока работает цикл, каждый раз создается клип на одной и той же глубине!
Извините, имел ввиду что на экране то же самое.

Опять запутался.

может кто укажет что неправильно делаю
Код:
#include "mc_tween2.as"

for (var i=1; i<=6; i++) {	
	crmovie(i);
}

function crmovie(i){

var home:MovieClip = this;

var mc:MovieClip = home.createEmptyMovieClip("mainClip" +i, home.getNextHighestDepth());
mc._x = 64+ i * 107;
mc._y = 235;



var mcc:MovieClip = mc.createEmptyMovieClip("clip" +i, mc.getNextHighestDepth());
mcc._x = Stage.width/2;
mcc._y = Stage.height/2;

var mcl:MovieClipLoader = new MovieClipLoader;
var mclListen:Object = new Object
mcl.addListener(mclListen);

   mclListen.onLoadInit = center;
   mcl.loadClip("main_img/"+i+".jpg", mcc);
  
  function center(target:MovieClip) {
   
target._x = -target._width/2;
  target._y = -target._height/2;
}


mclListen.onLoadComplete = function(mcc:MovieClip) {

	mcc.onRollOver = grow;
	mcc.onRollOut = shrink;

	 }
}
function grow() {
 
	 this.scaleTo (109 , 0.3, "linear");
	  
	 
	 }

function shrink() {

	 this.scaleTo (100 , 0.3, "linear");
}


Последний раз редактировалось radiofanat; 17.10.2008 в 00:02.
Старый 17.10.2008, 00:03
radiofanat вне форума Посмотреть профиль Отправить личное сообщение для radiofanat Найти все сообщения от radiofanat
  № 18  
Ответить с цитированием
radiofanat

Регистрация: Oct 2008
Сообщений: 14
не получается scale от центра картинки.

Старый 17.10.2008, 04:11
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 19  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Все трансформации происходят относительно точки регистрации мувиклипа.
Точка регистрации мувиклипа должна быть в центре для такого случая.
Это либо при создании мувика указывать, либо перед скалированием контент внутри мувиклипа смещать вверх-влево на половину высоты и ширины мувиклипа соответсвенно.
__________________
trace("Остановите Землю, я сойду!!!");

Старый 17.10.2008, 08:06
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 20  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Код:
createEmptyMovieClip("box_pic", 0);
box=new Object()
box.path=box_pic
box_pic._x=50
box_pic._y=50
st=0
var listener:Object = new Object();
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(listener);
for(i=1;i<=5;i++)
{for(j=1;j<=5;j++)	{
	st++
box.path.createEmptyMovieClip("pic_box"+st, st);
	box_name=box.path["pic_box"+st]
mcLoader.loadClip("img"+st+".jpg",box_name);

box_name._x=70*i
box_name._y=70*j
box_name._xscale=15
box_name._yscale=15}}

listener.onLoadInit = function (mc:MovieClip) {
 if(mc)
 {init(mc)}}
 
function init(mc)
{mc.onPress=function()
{trace(this)}
mc.onRollOver =function()
{trace(this)}}
Вот так пойдёт?
правда без скале по центру

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:19.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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