Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пордолжить выполнение после actionscript 
:(
    Опции темы
ashenemy
Дата 20.3.2008, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



Такая проблемка
есть анимация, простая перестановка картинок местами, в один момент врубается показ изображения, врубается actionscript ом, проблема в том что после этого ролик все тормозит
помогите плз
 вот код скрипта 
Код

// импортируем нужные классы
import mx.transitions.Tween;
import mx.transitions.easing.*;
//
// константы:
// размер блока для маски
var blockWidth:Number = 50;
// отступ рамки от картинки
var picMargin:Number = 30;
//
//
// функция, создающая рамку и подгружающая картинку
// в качестве аргумента принимает линкейдж картинки
function createPicture(pic:String):Void {
// создаем клип-контейнер
var effect_mc:MovieClip = this.createEmptyMovieClip("effect_mc", this.getNextHighestDepth());
// создаем клип, в котором нарисуем фон
var bg_mc:MovieClip = effect_mc.createEmptyMovieClip("bg_mc", 0);
// подгружаем картинку и ставим ее в нужные
// координаты, в зависимости от значения picMargin
var pic_mc:MovieClip = effect_mc.attachMovie(pic, "pic_mc", 10, {_x:picMargin, _y:picMargin});
// временно делаем картинку невидимой
pic_mc._visible = false;
// так как картинка загружена и размер ее теперь известен,
// рисуем для нее фон, вызывая функцию drawRectangle()
drawRectangle(bg_mc, pic_mc._width+picMargin*2, pic_mc._height+picMargin*2, true);
// ставим всю нашу композицию по центру сцены
effect_mc._x = Math.round((Stage.width-effect_mc._width)/2);
effect_mc._y = Math.round((Stage.height-effect_mc._height)/2);
// создаем клип-контейнер для маски
var mask_mc:MovieClip = effect_mc.createEmptyMovieClip("mask_mc", 20);
// назначаем его маской для картинки
pic_mc.setMask(mask_mc);
// рисуем в клипе-маске кучу квадратов и расставляем
// их по местам, полностью закрывая картинку
var i:Number;
var k:Number;
for (i=0; i<Math.ceil(pic_mc._width/blockWidth); i++) {
 for (k=0; k<Math.ceil(pic_mc._height/blockWidth); k++) {
  // создаем новый клип
  var newBlock_mc:MovieClip = mask_mc.createEmptyMovieClip("bl"+i+k, mask_mc.getNextHighestDepth());
  // ставим его в нужное место
  newBlock_mc._x = i*blockWidth+picMargin;
  newBlock_mc._y = k*blockWidth+picMargin;
  // рисуем в нем квадрат
  drawRectangle(newBlock_mc, blockWidth, blockWidth, false);
 }
}
// запускаем анимацию
startAnimation(effect_mc);
}
//
// функция, которая запускает анимацию
// аргументом принимает ссылку на клип с эффектом
function startAnimation(target_mc:MovieClip):Void {
// создаем твин для _xscale фона
var bgTween:Tween = new Tween(target_mc, "_xscale", Bounce.easeOut, 1, 100, 1, true);
// когда анимация закончится
bgTween.onMotionFinished = function():Void  {
 // делаем картинку снова видимой
 target_mc.pic_mc._visible = true;
 // удаляем обработчик событий
 delete this.onMotionFinished;
 // для каждого квадрата
 for (var i in target_mc.mask_mc) {
  var block_mc:MovieClip = target_mc.mask_mc[i];
  // запоминаем координаты клипа и ставим его в центр
  block_mc.x0 = block_mc._x;
  block_mc.y0 = block_mc._y;
  block_mc._x = target_mc.pic_mc._width/2;
  block_mc._y = target_mc.pic_mc._height/2;
  // делаем _xscale и _yscale равными нулю
  block_mc._xscale = block_mc._yscale =0;
  // запускаем твиновую анимацию для квадратов в маске
  // через паузу
  block_mc.intervalID = setInterval(blockMover, (block_mc.x0/blockWidth*block_mc.y0/blockWidth*100), block_mc);
 }
};
}
//
// функция, анимирующая квадраты маски
function blockMover(target_mc:MovieClip):Void {
// очищаем интервал, чтоб анимация не повторялась
clearInterval(target_mc.intervalID);
// создаем твины для _x, _y, _xscale, _yscale
var xTween:Tween = new Tween(target_mc, "_x", Bounce.easeOut, target_mc._x, target_mc.x0, 2, true);
var yTween:Tween = new Tween(target_mc, "_y", Bounce.easeOut, target_mc._y, target_mc.y0, 2, true);
var xScTween:Tween = new Tween(target_mc, "_xscale", Bounce.easeOut, Math.random()*20, 100, 2, true);
var yScTween:Tween = new Tween(target_mc, "_yscale", Bounce.easeOut, Math.random()*20, 100, 2, true);
}
//
// функция, которая умеет рисовать прямоугольники
// нужного размера, если надо, то с рамкой.
// передаваемые аргументы:
// target_mc - клип, в котором рисуем;
// width - ширина;
// height - высота;
// withBorder - если true, то будет рамка, если false, то не будет
function drawRectangle(target_mc:MovieClip, width:Number, height:Number, withBorder:Boolean):Void {
// если надо
if (withBorder) {
 // то говорим, чтоб рамку рисовал
 target_mc.lineStyle(3, 0xFFFFFF);
}
// рисуем черный прямоугольник                      
with (target_mc) {
 beginFill(0, 100);
 moveTo(0, 0);
 lineTo(width, 0);
 lineTo(width, height);
 lineTo(0, height);
 lineTo(0, 0);
 endFill();
}
}
//
createPicture("pic");

честно говоря он был подсмотрен, но сжалтесь очень надо, помогите плз
PM MAIL   Вверх
szz
Дата 20.3.2008, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 6
Всего: 33



Ну, что сказать... слишком жирные циклы у тебя, еще и влложенные, еще и выполняется часто.

С уважением к ресурсам относитесь, товарищи. Умеренно.
А то из-за таких как вы и делают мультики "Берегите воду" и прочие.


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 1,2 | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.