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

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

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

Регистрация: Dec 2006
Адрес: Россия, Пермь
Сообщений: 72
Отправить сообщение для Amra Kimmerian с помощью ICQ
По умолчанию Публикация в html - пропало содержимое

Здравствуйте!
Сделал резиновую флэшку, вот код:
Код:
stop();
Stage.scaleMode = "noScale";
Stage.align = "TL";
_root.onResize = function() {
	if (Stage.width>=800) {
		mc_logo._x = Stage.width/2-mc_logo._width/2;
		mc_adresses._x = Stage.width/2-mc_adresses._width/2;
		mc_redText._x = Stage.width/2-mc_redText._width/2;
	} else {
		mc_logo._xscale = mc_logo._yscale=Stage.width/8;
		mc_logo._x = Stage.width/2-mc_logo._width/2;
		mc_logo._y = (100-mc_logo._xscale)/2;
		mc_adresses._xscale = mc_adresses._yscale=Stage.width/8;
		mc_adresses._x = Stage.width/2-mc_adresses._width/2;
		mc_adresses._y = (45-mc_adresses._xscale)/4+110;
		mc_redText._xscale = mc_redText._yscale=Stage.width/8;
		mc_redText._x = Stage.width/2-mc_redText._width/2;
		mc_redText._y = (115-mc_redText._xscale)/4+160;
	}
};
Stage.addListener(_root);
_root.onResize();
Публикую во swf и в exe файлы - они работают нормально, публикую в html-файл - в нем видно только фон, даже когда изменяю размеры. Вот что дает флэш для html:
Код:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r" />
<title>capResize</title>
</head>
<body bgcolor="#ff8a00">
<!--url's used in the movie-->
<!--text used in the movie-->
<!-- saved from url=(0013)about:internet -->
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="800" height="228" id="capResize" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="capResize.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ff8a00" /><embed src="capResize.swf" quality="high" bgcolor="#ff8a00" width="800" height="228" name="capResize" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>
Товарищ по работе (программер) берет swf-файл и сам вручную вставляет его в html, у него тоже не появляется содержимое, но при изменении размеров окна все же появляется. Вот его код html:
Код:
Сергей: <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="100%" height="228" id="resizecap" align="center">
<param name="allowScriptAccess" value="sameDomain">
<param name="movie" value="resizecap.swf">
<param name="quality" value="">
<param name="bgcolor" value="">	
<embed src="resizecap.swf" quality="high" width="100%" height="228" name="resizecap" align="top" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
</object>
Не пойму почему у меня вообще не появляется содержимое флэшки в окне, а у товарища-программиста только при изменении размеров окна. Ведь в конце кода стоит _root.onResize. Да и в самой swf-ке все содержимое (импортированные заранее в библиотеку и помещенные в центр флэшки ai-объекты) видно сразу безо всяких там ресайзов. Раньше делали такие же работы и все шло и работало.
Если кому нужно, прилагаю исходник.
Подскажите, пожалуйста, что сделать, чтобы все отображалось своевременно и верно.
Вложения
Тип файла: rar capResize.rar (24.7 Кб, 37 просмотров)

Старый 10.05.2007, 11:40
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 2  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
всё дело в _xscale и _yscale, из-за них пропадает графика
__________________
Free-lance | Twitter | Me

Старый 10.05.2007, 11:46
Amra Kimmerian вне форума Посмотреть профиль Отправить личное сообщение для Amra Kimmerian Найти все сообщения от Amra Kimmerian
  № 3  
Ответить с цитированием
Amra Kimmerian

Регистрация: Dec 2006
Адрес: Россия, Пермь
Сообщений: 72
Отправить сообщение для Amra Kimmerian с помощью ICQ
, ничего себе! А нельзя ли узнать отчего именно - сам механизм косяка? И чем его заменить?
В других работах есть и _xscale, и _yscale, но такого глюка не было.

Старый 10.05.2007, 11:52
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 4  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
Вы не правильно вычисляете _xscale, попробуйте установить целое число, на пример 80...

Добавлю, у меня есть подозрение что при загрузке в браузере изначально флеш Stage.width высчитывает как 0, исходя из этого выполняется условие else и вычисления производяться неверно, т.е высчитывается на 0. Я поставил обработчик onLoad и изменил Dimantions, в среде вычисления производятся верно.
__________________
Free-lance | Twitter | Me


Последний раз редактировалось screamge; 10.05.2007 в 12:20.
Старый 10.05.2007, 12:26
Amra Kimmerian вне форума Посмотреть профиль Отправить личное сообщение для Amra Kimmerian Найти все сообщения от Amra Kimmerian
  № 5  
Ответить с цитированием
Amra Kimmerian

Регистрация: Dec 2006
Адрес: Россия, Пермь
Сообщений: 72
Отправить сообщение для Amra Kimmerian с помощью ICQ
Да, screamge, поменял все _xscale и _yscale на такие формулы:
Код:
stop();
Stage.scaleMode = "noScale";
Stage.align = "TL";
var logoW:Number = 587;
var logoH:Number = 90;
var adressesW:Number = 632;
var adressesH:Number = 64;
var redTextW:Number = 627;
var redTextH:Number = 60;
_root.onResize = function() {
	if (Stage.width>=800) {
		mc_logo._x = Stage.width/2-mc_logo._width/2;
		mc_adresses._x = Stage.width/2-mc_adresses._width/2;
		mc_redText._x = Stage.width/2-mc_redText._width/2;
	} else {
		mc_logo._width = Stage.width*logoW/800;
		mc_logo._height = logoH*(mc_logo._width/logoW);
		mc_logo._x = Stage.width/2-mc_logo._width/2;
		mc_adresses._width = Stage.width*adressesW/800;
		mc_adresses._height = adressesH*(mc_logo._width/adressesW);
		mc_adresses._x = Stage.width/2-mc_adresses._width/2;
		mc_redText._width = Stage.width*redTextW/800;
		mc_redText._height = redTextH*(mc_logo._width/redTextW);
		mc_redText._x = Stage.width/2-mc_redText._width/2;
	}
};
Stage.addListener(_root);
_root.onResize();
И все равно ничего нет... Дело не в них. Хотя в процессе изменения кода, именно когда было фиксированное число - появлялись элементы. Теперь вся тяжесть подозрения падает на Stage. Попробую, как Вы сказали использовать onLoad.
Да и попутно - как через onLoad проверить загрузку всего мувика в самом мувике? Или грузить его в другой мувик?


Последний раз редактировалось Amra Kimmerian; 10.05.2007 в 12:32.
Старый 10.05.2007, 12:28
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 6  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
Я пробовал уже, не помогает...видимо придётся условия менять.

Код:
import mx.utils.Delegate;

Stage.scaleMode = "noScale";
Stage.align = "TL";
var listen:Object = new Object();

this.onLoad = Delegate.create(this, this.resizer);
listen.onResize = Delegate.create(this, this.resizer);

var origw:Number = 800;
var origh:Number = 228;

function resizer():Void {
	if (Stage.width>=800) {
		mc_logo._x = Stage.width /2-mc_logo._width/2;
		mc_adresses._x = Stage.width/2-mc_adresses._width/2;
		mc_redText._x = Stage.width/2-mc_redText._width/2;
	} else {
		_root.onEnterFrame = function() {
			if (Stage.width != 0) {
				delete _root.onEnterFrame;
			}
			
			var xscale = Stage.width / origw * 80
			
			mc_logo._xscale = mc_logo._yscale = xscale
			mc_logo._x = Stage.width/2-mc_logo._width/2;
			mc_logo._y = (100-mc_logo._xscale)/2;
			
			
			
			mc_adresses._xscale = mc_adresses._yscale=xscale;
			mc_adresses._x = Stage.width/2-mc_adresses._width/2;
			mc_adresses._y = (45-mc_adresses._xscale)/4+110;
			
			mc_redText._xscale = mc_redText._yscale=xscale;
			mc_redText._x = Stage.width/2-mc_redText._width/2;
			mc_redText._y = (115-mc_redText._xscale)/4+160;
		};
	}
}

Stage.addListener(listen);
Мои соображения на счёт нуля оказались верны, решил проблему добавлением обработчика onEnterFrame в условие. Теперь работает. Комментить не стал думаю сами разберётесь, если всёже будет что-то не понятно...спрашивайте

з.ы. сейчас заметил что при ресайзе всёже придёться эту строку
Код:
var xscale = Stage.width / origw * 80
видоизменять, т.е. менять 80 на 100. Решаемо добавлением ещё одного условия
__________________
Free-lance | Twitter | Me


Последний раз редактировалось screamge; 10.05.2007 в 12:53.
Старый 10.05.2007, 13:25
Amra Kimmerian вне форума Посмотреть профиль Отправить личное сообщение для Amra Kimmerian Найти все сообщения от Amra Kimmerian
  № 7  
Ответить с цитированием
Amra Kimmerian

Регистрация: Dec 2006
Адрес: Россия, Пермь
Сообщений: 72
Отправить сообщение для Amra Kimmerian с помощью ICQ
screamge, за Stage.width=0 от моего лица и лица всей нашей фирмы тебе объявляется благодарность . Я немного сделал по другому:
Код:
stop();
Stage.scaleMode = "noScale";
Stage.align = "TL";
var logoW:Number = 587;
var logoH:Number = 90;
var adressesW:Number = 632;
var adressesH:Number = 64;
var redTextW:Number = 627;
var redTextH:Number = 60;
_root.onResize = function() {
	
	if (Stage.width>800) {
		mc_logo._x = Stage.width/2-mc_logo._width/2;
		mc_adresses._x = Stage.width/2-mc_adresses._width/2;
		mc_redText._x = Stage.width/2-mc_redText._width/2;
	} else {
		mc_logo._width = Stage.width*logoW/800;
		mc_logo._height = logoH*(mc_logo._width/logoW);
		mc_logo._x = Stage.width/2-mc_logo._width/2;
		mc_adresses._width = Stage.width*adressesW/800;
		mc_adresses._height = adressesH*(mc_logo._width/adressesW);
		mc_adresses._x = Stage.width/2-mc_adresses._width/2;
		mc_redText._width = Stage.width*redTextW/800;
		mc_redText._height = redTextH*(mc_logo._width/redTextW);
		mc_redText._x = Stage.width/2-mc_redText._width/2;
	}
};
Stage.addListener(_root);
function delayFunction() {
	_root.onResize();
	if (Stage.width != 0) {
		clearInterval(delay);
	}
}
delay = setInterval(delayFunction, 1000);
Надеюсь в вебе это будет работать в вэбе. Ну по крайней мере clearInterval можно будет убрать, если не будет успевать опять.
Спасибо большое! Мда... Век живи - век учись!

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

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

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


 


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


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