Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Заполнение контейнера (http://www.flasher.ru/forum/showthread.php?t=161745)

krog2008 27.07.2011 13:13

Заполнение контейнера
 
Код AS1/AS2:

import flash.net.URLRequest;
import flash.display.Loader;
 
var imgRequest_1:URLRequest = new URLRequest("1.jpg");
var imgLoader_1:Loader = new Loader;
imgLoader_1.load(imgRequest_1);
_1.addChild(imgLoader_1);

Изображение грузится, но оно довольно большое (по разрешению) и выходит за рамки мувика "_1"
как сделать что бы он автоматически заполнял мувик и не выходил за его пределы?

т.е. создаю мувики - контейнеры все одних и тех же пропорций! хочу что бы любые изображния (в основном больше этого мувика) загружались именно в него не выходя за рамки. спасибо

dimarik 27.07.2011 13:30

Код AS3:

imgLoader_1.width = _1.width;
imgLoader_1.height = _1.height;
_1.addChild(imgLoader_1);

C сохранением aspect ratio надеюсь сами разберетесь (scaleX, scaleY)

krog2008 27.07.2011 13:39

Код AS1/AS2:

import flash.net.URLRequest;
import flash.display.Loader;
 
var imgRequest_1:URLRequest = new URLRequest("bg.jpg");
var imgLoader_1:Loader = new Loader;
imgLoader_1.load(imgRequest_1);
imgLoader_1.width = _1.width;
imgLoader_1.height = _1.height;
_1.addChild(imgLoader_1);

такой код ничего не выводит! только пустой мувик!

DaFive 27.07.2011 13:49

addChild(_1);

krog2008 27.07.2011 13:53

Нет, не помогате addChild (((((

Добавлено через 11 минут
РЕБЯТА! помогите! написал вышеуказанный код, создал мувик "_1"
указал правильно путь!
без
Код AS1/AS2:

imgLoader_1.width = _1.width;
imgLoader_1.height = _1.height;

выдает картинку но гораздо большую чем мувик!
с
Код AS1/AS2:

imgLoader_1.width = _1.width;
imgLoader_1.height = _1.height;

просто показывает мою сцену с мувиком

addChild(_1); не работает, да и как оно может работать? я ж прошу им показать то что у меня итак есть на сцене!

Добавлено через 26 минут
подумал что она не успевает загрузиться и добавил:
Код AS3:

imgLoader_1.addEventListener(Event.COMPLETE, fun);
function fun(e:Event):void {
        imgLoader_1.width = _1.width;
    imgLoader_1.height = _1.height;
addChild(imgLoader_1);
}

но тоже самое в итоге ((

-De- 27.07.2011 14:25

Гороскоп говорит, что _1.width - ноль.

krog2008 27.07.2011 14:30

А как изменить предсказания? ведь у мувика есть параметры габаритные 150x 100 (к примеру) почему может равно нулю быть? как это изменить?

-De- 27.07.2011 14:45

Деник дать %)
У пустого мувика не бывает габаритов. На этом основаны предсказания.
Код, где "подумал что она не успевает загрузиться" - должен работать (только там почему-то не в _1 добавляется).
Не заниматься гаданием надо, а взять и посмотреть/оттрейсить самому ширины/длины/координаты после загрузок и добавлений.

krog2008 27.07.2011 14:54

а если это не пустой мувик?
Код AS3:

trace(imgLoader_1.width);

нечего не выдает (

Добавлено через 8 минут
пардон!
trace(_1.width);
trace(_1.height);
=
298.95
175
ну а что дальше?

СлаваRa 27.07.2011 15:18

Скорая помощь - загрузка картинки и подгонка её габаритов. (Один из возможных способов)

krog2008 27.07.2011 15:29

я не знаю конечно но там помоему AS2 по этой ссылке ((

СлаваRa 27.07.2011 15:31

Да, именно. Изучите подход, перепишите на AS 3.0.

krog2008 27.07.2011 15:47

что то нефига не получается по этой ссылке...

DaFive 27.07.2011 15:50

Модифицированный код?

krog2008 27.07.2011 15:51

блин...я flash вижу неделю перед глазами! я еще не могу все это дело переписывать! мне до окончания проекта осталось только изображениям дать ссылки и там по мелочи!
Помогите! если это просто - напишите пожалуйста на AS3 пожалуйста!!! ну не хватает мне мозгов за неделю туда сюда конвертировать из AS 3 в AS 2 и наоборот!

Добавлено через 4 минуты
в AS 2 просто показывает мою сцену! да и пес с ним!
мне нужно только загрузить в мувиклип изображение из вне, что бы можно было трансформируя (масштабируя) мувик менять размер изображения! да и это не надо! просто что бы все изображение загружались в мувиклип с ФИКСИРОВАННЫМ размером и показывались полностью!

SvetozarPNZ 27.07.2011 16:02

В этом куске кода загруженное изображение kartinka:Bitmap подстраивается под размеры shirina vysota

Код AS3:

        if (kartinka.bitmapData.width>shirina) {
                kartinka.width=shirina;
                kartinka.height=Math.round(kartinka.bitmapData.height/kartinka.bitmapData.width*shirina);
                if (kartinka.height>vysota) {
                        kartinka.height=vysota;
                        kartinka.width=Math.round(kartinka.width/kartinka.height*vysota);
                }
        }
        if (kartinka.bitmapData.height>vysota) {
                kartinka.height=vysota;
                kartinka.width=Math.round(kartinka.bitmapData.width/kartinka.bitmapData.height*vysota);
                if (kartinka.width>shirina) {
                        kartinka.width=shirina;
                        kartinka.height=Math.round(kartinka.height/kartinka.width*shirina);
                }
        }
        if (kartinka.bitmapData.width<=shirina && kartinka.bitmapData.height<=vysota) {
                if (kartinka.bitmapData.width<shirina) {
                        kartinka.width=shirina;
                        kartinka.height=Math.round(kartinka.bitmapData.height/kartinka.bitmapData.width*shirina);
                        if (kartinka.height>vysota) {
                                kartinka.height=vysota;
                                kartinka.width=Math.round(kartinka.bitmapData.width/kartinka.bitmapData.height*vysota);
                        }
                }
        }


Котяра 27.07.2011 16:11

Цитата:

Сообщение от krog2008 (Сообщение 1015202)
блин...я flash вижу неделю перед глазами! я еще не могу все это дело переписывать! мне до окончания проекта осталось только изображениям дать ссылки и там по мелочи!
Помогите! если это просто - напишите пожалуйста на AS3 пожалуйста!!! ну не хватает мне мозгов за неделю туда сюда конвертировать из AS 3 в AS 2 и наоборот!

Добавлено через 4 минуты
в AS 2 просто показывает мою сцену! да и пес с ним!
мне нужно только загрузить в мувиклип изображение из вне, что бы можно было трансформируя (масштабируя) мувик менять размер изображения! да и это не надо! просто что бы все изображение загружались в мувиклип с ФИКСИРОВАННЫМ размером и показывались полностью!

Никто вам ничего не должен. Если взялись не за своё дело - терпите или нанимайте профессионалов
.

СлаваRa 27.07.2011 16:16

из приведенного мной примера (поправил на AS3):
Код AS3:

private function imageResize(image:Bitmap, maxWidth:Number, maxHeight:Number, allowEnlarge:Boolean = false):void
{
    var ratioX:Number = maxWidth / image.width;
    var ratioY:Number = maxHeight / image.height;
    if (ratioX <= ratioY)
    {
        if (ratioX < 1 || allowEnlarge)
        {
            image.width = maxWidth;
            image.scaleY = image.scaleX;
        }
    } else {
        if (ratioY < 1 || allowEnlarge)
        {
            image.height = maxHeight;
            image.scaleX = image.scaleY;
        }
    }
}


krog2008 27.07.2011 16:22

Цитата:

Сообщение от Котяра (Сообщение 1015206)
Никто вам ничего не должен. Если взялись не за своё дело - терпите или нанимайте профессионалов
.

Прошу прощения! не хотел никого тронуть! просто обидно что два дня пытаюсь решить эту проблему, которая не решается а я не могу понять почему! уже столько всего перечитал!! мне нужно доделать только ЭТО! и все!

а то что это не мое, я уже осознал! но нужно доделать то за что взялся!!!

СлаваRa 27.07.2011 16:40

Что Вы теперь не можете доделать?

- загружаете изображение
- дожидаетесь его загрузки
- изменяете размер
- добавляете в контейнер
- показываете\добавляете контейнер, если он не отображался

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

Все, работа выполнена.

krog2008 27.07.2011 17:16

с помощью -De-, СлаваRa, SvetozarPNZ и других мне удалось загрузить картинку!!
Код AS3:

import flash.net.URLRequest;
import flash.display.Loader;
 
var imgRequest_1:URLRequest = new URLRequest("2.jpg");
var imgLoader_1:Loader = new Loader;
imgLoader_1.load(imgRequest_1);
 
imgLoader_1.contentLoaderInfo.addEventListener(Event.COMPLETE, fun);
function fun(e:Event):void {
        treq.visible = false;
        imgLoader_1.width = treq.width;
        imgLoader_1.height = treq.height;
        treqq.addChild(imgLoader_1);
}

но для этого мне понадобилось создать еще один мувик treqq не понимаю зачем! просто попробовал! и получилось! может кто нибудь объяснить зачем?
объеденил их (эти два мувика) в один ("sd") и в коде подписал sd.treq и sd.treqq в итоге получился один мувик который я могу теперь менять как угодно!! если кто найдет ошибки в коде или упрощение буду признателен!!! спасибо flasher.ru за помощь!

dimarik 27.07.2011 18:09

Вячеслав, вы запутали стартера окончательно. Это раздел AS3.

krog2008, трейс вы делаете до или после загрузки и добавления лоадера? )

Получается, что treq уже существует и имеет размер? Зачем тогда добавлять лоадер к treqq?

krog2008 27.07.2011 18:27

а иначе не добавляется ((

dimarik 27.07.2011 19:14

Да все нормально. Вы имеете treq с размерами width > 0 и height > 0. Он служит как эталон. Задаете его размеры лоадеру (imgLoader_1). Добавляете лоадер в пустой клип treqq. Я же предлагаю изначально добавлять лоадер сразу в treq. Исключите treqq.

СлаваRa 27.07.2011 19:19

Сначала я хотел показать подход к его вопросу.
Но после сообщения SvetozarPNZ'а, и сообщений автора, я переписал функцию ресайза на АS 3.0, честное слово не хотел никого вводить в заблуждение.

krog2008 27.07.2011 20:38

Все получилось! можт кому пригодится хотя сомневаюсь =)) так ламеров как я нет =)))
Код AS3:

import flash.net.URLRequest;
import flash.display.Loader;
 
var imgRequest_1:URLRequest = new URLRequest("1.jpg");
var imgLoader_1:Loader = new Loader;
imgLoader_1.load(imgRequest_1);
 
imgLoader_1.contentLoaderInfo.addEventListener(Event.COMPLETE, fun);
function fun(e:Event):void {
        imgLoader_1.width = qwerty.width;
        imgLoader_1.height = qwerty.height;
        qwerty.addChild(imgLoader_1);
}


dimarik 27.07.2011 20:42

Резюме. Пустой DisplayObject не имеет геометрических размеров.


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

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