<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>memo.393</title>
	<atom:link href="http://memo.393.bz/feed" rel="self" type="application/rss+xml" />
	<link>http://memo.393.bz</link>
	<description>個人的メモです。間違いなどありましたらご指摘ください。。。</description>
	<lastBuildDate>Sun, 27 Nov 2011 15:27:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[AS]FlashPlayer11で、FMS接続でのNetStatusEvent.NET_STATUSをリスナーしてるときのNetStreamからのdispatchの挙動が変わったっぽい。</title>
		<link>http://memo.393.bz/archives/1697</link>
		<comments>http://memo.393.bz/archives/1697#comments</comments>
		<pubDate>Sun, 27 Nov 2011 15:06:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1697</guid>
		<description><![CDATA[FlashPlayer11(以下FP11)とFlashPlayer10(FP10)で、FMSの動画を再生する際に、NetStreamでNetStatusEvent.NET_STATUSイベントをaddEventLinst [...]]]></description>
			<content:encoded><![CDATA[<p>FlashPlayer11(以下FP11)とFlashPlayer10(FP10)で、FMSの動画を再生する際に、NetStreamでNetStatusEvent.NET_STATUSイベントをaddEventLinster登録したさいのイベント配信のタイミングがFP11とFP10で異なる現象に遭遇した。</p>
<p>具体的には以下をドキュメントクラスとしてパブリッシュしたswfを再生した場合に、traceされる結果がFP11とFP10で異なった。</p>
<pre name="code" class="as">

package
{
	import flash.display.Sprite;

	public class FMSTest extends Sprite
	{
		public function FMSTest()
		{
			//FMSサーバーへのパス
			var dirPath:String = &quot;rtmp://hoge.hoge.hoge.hoge&quot;;
			var filePath:String = &quot;mp4:hoge.mp4&quot;;
			addChild(new LoadMovie(dirPath, filePath));
		}
	}
}
import flash.display.MovieClip;
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;

class LoadMovie extends MovieClip
{

	private var nsUrl:String
	private var nc:NetConnection;
	private var video:Video;

	public function LoadMovie(ncUrl:String, nsUrl:String, w:uint = 320, h:uint = 320 ) {
		this.nsUrl = nsUrl;
		//ネットコネクションを作る
		nc = new NetConnection();
		//ネットコネクションの接続状態を調べるリスナー
		nc.addEventListener(NetStatusEvent.NET_STATUS , onNcStatus);
		//ネットコネクションを接続する。
		nc.connect(ncUrl);
		nc.client = new Object();
	}

	//ネットコネクションの状態でいろいろ出力される
	private function onNcStatus(e:NetStatusEvent):void
	{
		switch (e.info.code)
		{
			//もし無事に接続されたら、
			case &quot;NetConnection.Connect.Success&quot;:
			initStream();
			break;
		}
	}

	//ネットストリームの初期化処理
	private function initStream():void {
		//ネットコネクションを作る
		var ns:NetStream = new NetStream(nc);
		//ネットコネクションの接続状態を調べるリスナー
		ns.addEventListener(NetStatusEvent.NET_STATUS, onNsStatus);
		//読み込みの時間を設定
		ns.bufferTime = .1
		//メタデータ取得用のオブジェクトを設定
		ns.client = new Object();
		//videoインスタンスを作成
		video = new Video();
		video.attachNetStream(ns);
		addChild(video);
		//再生開始
		ns.play(nsUrl);
	}

	private function onNsStatus(e:NetStatusEvent):void {
		trace(&quot;onNsStatus : &quot;+e.info.code);
	}
}
</pre>
<p>再生した際のtraceの出力結果を以下に示す。<br />
<strong>FP10</strong></p>
<blockquote><p>
onNsStatus : NetStream.Play.Reset<br />
onNsStatus : NetStream.Play.Start<br />
onNsStatus : NetStream.Buffer.Full
</p></blockquote>
<p><strong>FP11</strong></p>
<blockquote><p>onNsStatus : NetStream.Play.Reset<br />
onNsStatus : NetStream.Play.Start<br />
onNsStatus : NetStream.Buffer.Empty<br />
onNsStatus : NetStream.Buffer.Full
</p></blockquote>
<p>FP11では、NetStream.Buffer.Emptyが追加されている。<br />
再現性は100%ではないが、6割～9割位の割合でNetStream.Buffer.Emptyイベントを取得するっぽい。</p>
<hr />
<p>で、再生開始のタイミングでNetStream.Buffer.Emptyイベントがでることで何が困るかというと、FMSでは動画の終了のタイミングを取るのにNetStream.Buffer.Emptyを使うことがあるからだ。<br />
参考：<a href="http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=8369&#038;forum=8" target="_blank">RTMP接続のランダム再生で最後の数秒が途切れてしまう！</a></p>
<hr />
<p>再生開始のタイミングでNetStream.Buffer.Emptyを出したくない、どうしたもんかと思ってたら解決策っぽいのが見つかった。<br />
Netstream.bufferTimeを多めに取ってあげるとよいようだ。<br />
具体的には上記コードの59行目</p>
<pre name="code" class="as">

ns.bufferTime = .1; //0.1秒
//↓0.1秒を2秒にする
ns.bufferTime = 2; //2秒
</pre>
<p>これでNetStream.Buffer.Emptyはtraceされなくなった。<br />
とりあえず、同じ現象に遭遇してしまった人の参考になれば幸いです。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1697/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[iPhone]3GSから4sに機種変更するとき「実質無償機種変更キャンペーン」を利用するメリットとデメリット</title>
		<link>http://memo.393.bz/archives/1681</link>
		<comments>http://memo.393.bz/archives/1681#comments</comments>
		<pubDate>Fri, 18 Nov 2011 14:23:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1681</guid>
		<description><![CDATA[以前書いた記事 「[iPhone]契約2年を迎えたときに、2年契約(キャンペーン)を更新する ｏｒ しない のメリットとデメリット」 のオマケ的なお話。 本日iPhone4sに機種変更してきました。 現在softbank [...]]]></description>
			<content:encoded><![CDATA[<p>以前書いた記事<br />
<a href="http://memo.393.bz/archives/1621" target="_blank">「[iPhone]契約2年を迎えたときに、2年契約(キャンペーン)を更新する ｏｒ しない のメリットとデメリット」</a><br />
のオマケ的なお話。</p>
<p>本日iPhone4sに機種変更してきました。<br />
現在softbankは以下のようなキャンペーンを実施しています。(11/30まで)</p>
<p><a href="http://mb.softbank.jp/mb/special/are_kore_sore/upgrade/" target="_blank">「実質無償機種変更キャンペーン」</a></p>
<p>これは、ざっくり以下の内容。</p>
<ul>
<li>使用中の3GSの端末価格の支払いが済んでない場合はその分はチャラにするよ</li>
<li>支払いが完了してる人（ボクはここに該当）でも6000円キャッシュバックするよ</li>
</ul>
<hr />
<p>普通に考えると利用しない手はないのですが、ボクは今回このキャンペーンをあえて使わなかった。</p>
<hr />
<p>その理由は、（前回の記事の内容とも関係するけど）<br />
このキャンペーンを利用するといわゆる2年縛り状態になってしまう、ということ。<br />
つまり特定の期間外でsoftbankを解約した場合に約1万円の違約金が発生してしまう。</p>
<p>前回の記事にも書いたようにボクは現在softbankの2年縛りの呪縛から開放されている状態だった。<br />
目先の6000円を追うよりも、いつでも解約できるという精神的な安定を望んだわけだ。<br />
もちろん解約しないでずっと使うよ、って人はキャンペーンを利用したほうが得だろう。<br />
ただ個人的に、電話会社のプランは日々変化しつづけていて、それが消費者にとっては改悪の場合もあるわけで、新規で契約する場合にはそちらしか選べないけど、既存の契約者が旧プランを維持できるんであればそれを利用しつづけるのも手かな、と。<br />
一度プラン変えちゃったら、もう元には戻れないと思うし。</p>
<hr />
<p>p.s<br />
今回アップルストアで機種変更したのだけど、対応してくれた店員さんはとても親切でボクの過去3ヶ月の通話記録からもっと安くなるようなプランを提案してくれた。<br />
具体的には全然通話してなかったから、Wホワイトよりホワイトの方がお得ですよ、と。<br />
ありがたくその提案に従ったけれども、さすがに上記キャンペーンについての細かい話はなかった。<br />
(ボクが2年縛りのかかってない状態かなんて知らないだろうしね）<br />
こちらから質問することで丁寧に教えてくれた。<br />
なんでも直接聞いてみるのが一番だね。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1681/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS]AS3での、TextField.htmlTextでつかえる、HTML,CSSのまとめ</title>
		<link>http://memo.393.bz/archives/1677</link>
		<comments>http://memo.393.bz/archives/1677#comments</comments>
		<pubDate>Wed, 19 Oct 2011 12:03:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1677</guid>
		<description><![CDATA[以前作ったもの。 ネットで検索できるようにメモ。]]></description>
			<content:encoded><![CDATA[<p>以前作ったもの。<br />
ネットで検索できるようにメモ。</p>
<p><a href="http://memo.393.bz/wp-content/uploads/2011/10/Clipboard01.jpg" target="_blank"><img src="http://memo.393.bz/wp-content/uploads/2011/10/Clipboard01-150x150.jpg" alt="" title="Clipboard01" width="150" height="150" class="alignnone size-thumbnail wp-image-1678" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1677/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS]Progressinで「at jp.progression.casts::CastPreloader/set contextMenu()」なエラーがでたときの（とりあえずな）対処法</title>
		<link>http://memo.393.bz/archives/1659</link>
		<comments>http://memo.393.bz/archives/1659#comments</comments>
		<pubDate>Tue, 11 Oct 2011 04:52:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1659</guid>
		<description><![CDATA[Progressionを使ってこんなエラーに遭遇。 TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません at jp.progression [...]]]></description>
			<content:encoded><![CDATA[<p>Progressionを使ってこんなエラーに遭遇。</p>
<blockquote><p>TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません<br />
at jp.progression.casts::CastPreloader/set contextMenu()<br />
at com.courservector.flashbug::Profiler/allCompleteHandler()</p></blockquote>
<p><a href="http://memo.393.bz/wp-content/uploads/2011/10/error.jpg" target="_blank"><img src="http://memo.393.bz/wp-content/uploads/2011/10/error-150x150.jpg" alt="" title="error" width="150" height="150" class="alignnone size-thumbnail wp-image-1662" /></a></p>
<hr />
<p>詳しく検証してないからわかってることだけとりあえず箇条書き</p>
<ul>
<li>FlashPlayerがデバッグプレイヤーのときだけ発生<br />
（普通のプレイヤーでは発生しない）</li>
<li>FireFoxで、かつFireBugとFlashBugが入ってるときに発生</li>
<li>FireBugとFlashBugを無効化するとエラーはでなくなる<br />
(このときPCを再起動する必要があった）</li>
<li>無効化してからもいちど有効化したらエラーがでなくなった<br />
（わけわかめ）</li>
</ul>
<p>再現の規則性がよくわからんのでブラウザ(FF)とアドオンのバグなんじゃないかと推測。</p>
<hr />
<p>とりあえずProgression側での対処法も書いておく<br />
CastPreloader.asの431行目にあるsuper.contextMenu = menu;をコメントアウトすればOKっぽい。<br />
（右クリックでProgressionのライセンス表記もでるし、とりあえず大丈夫っぽい）</p>
<p>抜粋したコードはだいたいこんな感じ</p>
<pre name="code" class="as">

//CastPreloader.asの428～431行目あたり

// ContextMenu を作成する
var menu:ContextMenu = new ContextMenu();
menu.hideBuiltInItems();
//■↓ここをコメントアウトする
//super.contextMenu = menu;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1659/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS]画像をゆっくり動かす方法 その2</title>
		<link>http://memo.393.bz/archives/1647</link>
		<comments>http://memo.393.bz/archives/1647#comments</comments>
		<pubDate>Wed, 05 Oct 2011 12:36:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1647</guid>
		<description><![CDATA[以前にも書いた内容についての補足です。 画像をゆっくり動かす方法 上のリンクを読んでもらうとわかるのですが、 画像をゆっくり動かすにはbeginBitmapFill()の第2引数のMatrixを使って位置を変更しながら毎 [...]]]></description>
			<content:encoded><![CDATA[<p>以前にも書いた内容についての補足です。<br />
<a href="http://memo.393.bz/archives/798" target="_blank">画像をゆっくり動かす方法</a></p>
<p>上のリンクを読んでもらうとわかるのですが、<br />
画像をゆっくり動かすにはbeginBitmapFill()の第2引数のMatrixを使って位置を変更しながら毎フレーム描画する、<br />
ということだったのですが、これだとあまり直感的でなくてちょっとめんどくさい。</p>
<p>↓のサイトを観たらもっと簡単にできました。<br />
<a href="http://www.project-nya.jp/modules/weblog/details.php?blog_id=1500" target="_blank">にゃあプロジェクト｜[AS3.0] カルーセルに挑戦！ (2)</a></p>
<p>要はShapeなりSpriteなりにbeginBitmapFill()を使って(smoothing=trueで)描画してしまえば、画像が描画されたShapeなりSpriteは0.1px刻みで動かしてもカクカクすることはないようです。</p>
<p>前回のスクリプトを例に修正すると、</p>
<pre name="code" class="as">

package  {
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
	/**
	 * ...
	 * @author 393
	 */

	//ライブラリに画像を用意し、クラス名Bmpでリンケージ。
	//画像サイズは400×300

	public class Main extends Sprite{

		//private var matrix:Matrix = new Matrix();
		private var bmp:BitmapData;
		private var sp:Sprite;
		//private var mx:Number = 0;
		//private var my:Number = 0;
		//private var w:Number;
		//private var h:Number;

		public function Main() {
			bmp = new Bmp(0, 0);
			sp = new Sprite();
			addChild(sp);
			buttonMode = true;
			this.addEventListener(Event.ENTER_FRAME , xEnterFrame);

			//■追加：あらかじめspにBitmapDataを描画する。
			sp.graphics.beginBitmapFill(bmp, null, false, true);
			sp.graphics.drawRect(0,0,bmp.width,bmp.height);
		}
		function xEnterFrame (e:Event):void {
			//mx += 0.05
			//my += 0.05
			//matrix.tx = mx;
			//matrix.ty = my;
			//sp.graphics.clear();
			//smoothプロパティをtrueにするのがポイント
			//sp.graphics.beginBitmapFill(bmp, matrix,false,true);
			//sp.graphics.drawRect(mx, my, 400, 300);
			//sp.graphics.endFill();

			//直接動かしてもカクカクしない
			sp.x += 0.05;
			sp.y += 0.05;
		}
	}
}
</pre>
<p>こちらの方が直感的に使えていいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1647/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[iPhone]契約2年を迎えたときに、2年契約(キャンペーン)を更新する ｏｒ しない のメリットとデメリット</title>
		<link>http://memo.393.bz/archives/1621</link>
		<comments>http://memo.393.bz/archives/1621#comments</comments>
		<pubDate>Wed, 28 Sep 2011 08:09:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1621</guid>
		<description><![CDATA[iPhone(3GS)を契約して丸2年になったこともあり、softbaknkの窓口でタイトルどおりの質問をしてきたのでメモしとく。 まず、「2年契約(キャンペーン)」とは たぶん最初にsoftbankに契約したときに入る [...]]]></description>
			<content:encoded><![CDATA[<p>iPhone(3GS)を契約して丸2年になったこともあり、softbaknkの窓口でタイトルどおりの質問をしてきたのでメモしとく。</p>
<hr />
<p>まず、「2年契約(キャンペーン)」とは<br />
たぶん最初にsoftbankに契約したときに入ることになるいわゆる2年縛りの契約。<br />
この2年がたたないうちに契約を解除すると違約金を1万円くらい払わなきゃいけない。<br />
これは、どこの携帯電話会社でもあるよね。</p>
<hr />
<p>で、このまま何もしないと3年目からも「2年契約(キャンペーン)」に加入することになり、また2年縛りが始まり途中解約では違約金が発生する、ということ。</p>
<p>これが「2年契約(キャンペーン)」を更新したときのデメリットとなります。<br />
「2年契約(キャンペーン)」に加入してるときは、2年契約(キャンペーン)の更新可能月以外はsoftbank解約時に違約金を払う必要があるので好きなときに解約しずらいということ。<br />
ちなみに「2年契約(キャンペーン)」の更新可能月は、契約月+12,13,14の3ヶ月間。<br />
たとえばボクの場合は2009年8月にiPhone持ったので、更新可能月は2011年の8,9,10月ということ。</p>
<hr />
<p>では「2年契約(キャンペーン)」のメリット<br />
パケットの上限が4410円になります。<br />
ちなみに2年契約(キャンペーン)に加入してない場合の上限は5980円</p>
<p>下限はいずれも1029円なので、具体的には</p>
<ul>
<li>2年契約(キャンペーン)アリ：1029～4410円</li>
<li>2年契約(キャンペーン)ナシ：1029～5980円</li>
</ul>
<p>という料金形態になります。</p>
<hr />
<p>こうなると毎月パケット上限まで使い切ってる人（つまりボク）は「2年契約(キャンペーン)」をナシにすると毎月の支払い額が増えてしまって微妙だなぁと思ったら、「パケットし放題フラット」というサービスもあると。<br />
こちらに加入するとパケット使っても使わなくても毎月定額4410円のパケット代になると。</p>
<hr />
<p>まとめると、<br />
毎月パケットを上限まで使い切ってる人は、契約2年を迎えたときに迷わず「2年契約(キャンペーン)」の更新をとめる。<br />
これで、3年目以降はsoftbank解約時に違約金を払わなくてすむので安心。<br />
そして「パケットし放題フラット」に加入すれば月々の支払いは今までどおり。</p>
<p>毎月パケットを上限まで使い切ったり使い切らなかったりとムラが激しい人で、softbankから解約することはないって人は「2年契約(キャンペーン)」を更新してもいいんじゃないかな。</p>
<p><del datetime="2011-10-05T11:55:38+00:00">softbankの前はau使ってたのだけど、auは何年使っても契約月以外での解約は違約金払わされるシステムだった気がする。<br />
そう考えると、softbankは良心的なんじゃないかと思った。</del></p>
<hr />
>2011.10.6追記</p>
<hr />
<p>どうやらsoftbankの2年縛りには2種類あるらしい。</p>
<p>■1つは上にかいた「2年契約(キャンペーン)」<br />
■もうひとつは、2010年4月27日から改定された「ホワイトプラン」(基本料金のプラン)</p>
<p>ボクの場合は2010年4月27日以前（「2年契約(キャンペーン)」に加入してる人はこうなるはず）にホワイトプランを契約してるので、上記に書いたとおり、「2年契約(キャンペーン)」を解除すれば2年縛りの呪縛から解除されて、いつ解約してもよくなるのだけど、2010年4月27日以降に契約した人は「ホワイトプラン」(iPhoneの基本料金プランなので必ず入ってるはず)に2年縛りの条項が追加されたので、2年縛りからの呪縛からは逃れる方法はないみたい。</p>
<p><a href="http://trendy.nikkeibp.co.jp/article/column/20100421/1031567/?rt=nocnt" target="_blank">詳細>>ソフトバンクの新ホワイトプランが“改悪”にしか見えない理由</a></p>
<p>全然良心的じゃないな。<br />
あとよくよく考えたらauのときは端末代無料で2年縛り的なことがまかりとおってた時代だった。<br />
端末代一括で払ったとしても2年縛りがつきまとう、依然よりも環境悪化した気がする。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1621/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[iPhone]UISliderにてvalue値固定でmaximumValueを変更した際にはUISliderの見た目が変化しないみたい。そんなときの無理やりな対処の仕方。</title>
		<link>http://memo.393.bz/archives/1611</link>
		<comments>http://memo.393.bz/archives/1611#comments</comments>
		<pubDate>Thu, 18 Aug 2011 04:08:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1611</guid>
		<description><![CDATA[UISliderの挙動に悩みました。 やりたかったこと。 たとえば、UISliderが二つあって(sliderA,sliderBとする)、 初期値はこんな感じで、 sliderA.maximumValue = 200;  [...]]]></description>
			<content:encoded><![CDATA[<p>UISliderの挙動に悩みました。</p>
<p>やりたかったこと。<br />
たとえば、UISliderが二つあって(sliderA,sliderBとする)、<br />
初期値はこんな感じで、</p>
<pre name="code" class="c">

sliderA.maximumValue = 200;
sliderA.minimumValue = 100;
sliderA.value = 150;
sliderB.maximumValue = 100;
sliderA.minimumValue = 0;
sliderA.value = 50;
[
</pre>
<p>sliderAのvalue値をsliderBのmaximumValueに対応させたい</p>
<pre name="code" class="c">

//sliderAに対するValue changedなメソッド
-(IBAction) changeSliderAValue:(UISlider* )slider
{
    sliderB.maximumValue= sliderA.value;
}
</pre>
<p>sliderBはmaximumValueは変化するがvalueは変化しない。<br />
この状態でsliderBの見た目(つまみの位置)が相対的に変化して欲しい。<br />
が、変化しない。。</p>
<p>sliderBのvalueを変数で保持しておいて、明示的にsilderB.valueに代入してみてもだめ。</p>
<pre name="code" class="as">

float sliderBValue;
//sliderAに対するValue changedなメソッド
-(IBAction) changeSliderAValue:(UISlider* )slider
{
    sliderB.maximumValue= sliderA.value;
    sliderB.value = _sliderBValue;
}
//sliderBに対するValue changedなメソッド
-(IBAction) changeSliderBValue:(UISlider* )slider
{
    _sliderBValue = sliderB.value;
}
</pre>
<p>どうも挙動を確認してみるとslider.valueには現在地と同じ値を明示的に代入しても見た目の変化は起きないようだった。<br />
現在地と違う値を入れてあげれば、maximumValueに対応した見た目の変化も発生する。</p>
<p>で、考えた苦肉の策はこちら</p>
<pre name="code" class="as">

float sliderBValue;
//sliderAに対するValue changedなメソッド
-(IBAction) changeSliderAValue:(UISlider* )slider
{
    sliderB.maximumValue= sliderA.value;
    //わざとランダムな数値を一度代入することで現在値を更新する
   sliderB.value =  arc4random() % 100;
    //改めて_sliderBValueを代入することで正しい見た目にする
    sliderB.value = _sliderBValue;
}
//sliderBに対するValue changedなメソッド
-(IBAction) changeSliderBValue:(UISlider* )slider
{
    _sliderBValue = sliderB.value;
}
</pre>
<p>もっといい方法がありましたら、教えてくださいませ。。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1611/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS][iPhone]FlashBuilder4.5のActionScriptモバイルプロジェクトで横向き固定の設定をした場合のステージサイズを正しく取得する方法</title>
		<link>http://memo.393.bz/archives/1592</link>
		<comments>http://memo.393.bz/archives/1592#comments</comments>
		<pubDate>Sun, 14 Aug 2011 12:39:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1592</guid>
		<description><![CDATA[前の記事の続き、 FlashBuilder4.5のActionScriptモバイルプロジェクトでの設定のお話。 まず横向き固定にする方向は、hoge-app.xmlに &#60;!-- hoge-app.xml内のinit [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://memo.393.bz/archives/1585" target="_blank">前の記事の続き、</a><br />
FlashBuilder4.5のActionScriptモバイルプロジェクトでの設定のお話。</p>
<p>まず横向き固定にする方向は、hoge-app.xmlに</p>
<pre name="code" class="xml">

&lt;!-- hoge-app.xml内のinitialWindow要素に指定 --&gt;
&lt;aspectRatio&gt;landscape&lt;/aspectRatio&gt; 
</pre>
<p>を設定するだけでOK。<br />
これでデバッグプレビューすると確かに横向きでプレビューされる。<br />
が、stage.stageWidthは320、stage.stageHeightは480と変更されていない。<br />
(ちなみにFlexモバイルプロジェクトの場合はstage.stageWidthは480、stage.stageHeightは320となり問題ないようす)</p>
<p>ではどうしたらいいか、<br />
結論としては、ドキュメントクラスのコンストラクタに以下の一行を追加<br />
stage.setAspectRatio(StageAspectRatio.PORTRAIT); </p>
<pre name="code" class="as">

//前提で、hoge-app.xmlに&lt;aspectRatio&gt;landscape&lt;/aspectRatio&gt;と設定
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
trace(stage.stageWidth, stage.stageHeight); //出力：320,480
stage.setAspectRatio(StageAspectRatio.PORTRAIT);
trace(stage.stageWidth, stage.stageHeight); //出力：480,320
</pre>
<p>解せないのが、なぜPORTRAITなのか。<br />
通常はPORTRAITは縦、LANDSCAPEは横をあらわすので、stage.setAspectRatio(StageAspectRatio.LANDSCAPE);と設定すればいいと思ったのだけど、これだとstage.stageWidthは320、stage.stageHeightは480のままとなった。</p>
<pre name="code" class="as">

//前提で、hoge-app.xmlに&lt;aspectRatio&gt;landscape&lt;/aspectRatio&gt;と設定
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
trace(stage.stageWidth, stage.stageHeight); //出力：320,480
stage.setAspectRatio(StageAspectRatio.LANDSCAPE);
trace(stage.stageWidth, stage.stageHeight); //出力：320,480
</pre>
<p>解せぬ。</p>
<hr />
<p><font color="red"><strong>※2011.8.15追記</strong></font><br />
上記設定だと実機転送した際に横方向にはならない様子。。。<br />
やはりsetAspectRatio()にはStageAspectRatio.LANDSCAPEを設定しないと横向き固定にはなりませんでした。<br />
上に書いたLANDSCAPE設定での懸念されるステージサイズは、<br />
trace(stage.stageWidth, stage.stageHeight); //出力：320,480<br />
となっているようで実機起動上では特に問題なさげ。<br />
ステージサイズがちゃんと取れないのはデバッグプレビューだけでのバグってことなのか！？</p>
<p><font color="red"><strong>※2011.8.18追記</strong></font><br />
コメント欄にて教えていただきました。<br />
stage.setOrientation(StageOrientation.DEFAULT)を設定することで想定したstageサイズを取得することができました。</p>
<pre name="code" class="as">

//前提で、hoge-app.xmlに&lt;aspectRatio&gt;landscape&lt;/aspectRatio&gt;と設定
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
trace(stage.stageWidth, stage.stageHeight); //出力：320,480
stage.setAspectRatio(StageAspectRatio.LANDSCAPE);
stage.setOrientation(StageOrientation.DEFAULT)；
trace(stage.stageWidth, stage.stageHeight); //出力：480,320
</pre>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1592/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[AS][iPhone]FlashBuilder4.5のActionSclriptモバイルプロジェクトにて、iOSでプレビューした際のステージサイズが正常に取れない場合</title>
		<link>http://memo.393.bz/archives/1585</link>
		<comments>http://memo.393.bz/archives/1585#comments</comments>
		<pubDate>Sun, 14 Aug 2011 10:12:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1585</guid>
		<description><![CDATA[だいぶはまってネットに情報が見当たらなかったのでメモ。 FlashBuilder4.5でiPhone、Androind等のアプリを作るため、以下2つのプロジェクトが用意されました。 Flexモバイルプロジェクト Acti [...]]]></description>
			<content:encoded><![CDATA[<p>だいぶはまってネットに情報が見当たらなかったのでメモ。</p>
<p>FlashBuilder4.5でiPhone、Androind等のアプリを作るため、以下2つのプロジェクトが用意されました。</p>
<ol>
<li>Flexモバイルプロジェクト</li>
<li>ActionScriptモバイルプロジェクト</li>
</ol>
<p>1.はMXMLベースのプロジェクトで2はASだけで作れるプロジェクト。<br />
ボクはMXMLはさっぱりなのでASだけで作れる2.を選択。<br />
普通のFlashコンテンツを作ると同様にドキュメントクラスからゴリゴリ書いていけばOKですが、<br />
iOS用の書き出しをした際にステージサイズの参照値おかしなことになりました。</p>
<p>こちらの想定は、シミュレートデバイスが、iPhone3GSなら320 × 480、<br />
iPhone4設定なら、640 × 960となってほしいところですが、<br />
stage.stageWidth,stage.stageHeightのtrace結果は常に、500, 375</p>
<p>なんぞこれ、と思えどステージサイズの設定する箇所は見当たらず。<br />
ためしにapp.xmlのwidthとheightに直接値(320 480)を入れてみるも変化無し。<br />
さらにドキュメントクラスにSWFのembedタグを書いてみるも変化無し。</p>
<hr />
<p>FlashBuilderのHelpを観てみるとこんなページに行き着きました。<br />
<a href="http://www.randytroppmann.com/2011/04/12/pure-as3-workflow-with-flex-builder-4-5/" title="Purely mobile AS3 workflow with Flash Builder 4.5" target="_blank">http://www.randytroppmann.com/2011/04/12/pure-as3-workflow-with-flex-builder-4-5/</a></p>
<p>そこに書かれていた見慣れぬ1行を追加してみると。。。</p>
<pre name="code" class="as">

stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
</pre>
<p>これを入れることでstage.stageWidth,stageHeightが想定通りの値となりました。<br />
(シミュレートデバイスを変えることにより値も変化する)<br />
とりあえず、よくわからんけど、上記一行は必須らしい。</p>
<hr />
<p>P.S.<br />
Retina対応もできるらしいけど、3G/3GSとRetinaの混合設定がよくわからん。。<br />
 <requestedDisplayResolution>high</requestedDisplayResolution>を書くだけで、Objective-Cみたいに自動でいい感じに変換してくれるのか、それとも2種類の画角を分けて作らないのいけないのか。。<br />
Retinaの実機がないから検証できんのよね。。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1585/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[AS]Flash(AS3)におけるローディングバーが正常に動作しないときのひとつの理由</title>
		<link>http://memo.393.bz/archives/1577</link>
		<comments>http://memo.393.bz/archives/1577#comments</comments>
		<pubDate>Thu, 21 Jul 2011 02:26:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1577</guid>
		<description><![CDATA[すげぇ、はまったのでメモしておきます。 まずは状況説明 テスト環境(heteml)では何の問題もなくローディングバーが表示されていた。 本番環境(海外のよくわからんサーバー)にアップするとローディングバーの挙動がわけわか [...]]]></description>
			<content:encoded><![CDATA[<p>すげぇ、はまったのでメモしておきます。</p>
<p>まずは状況説明</p>
<ul>
<li>テスト環境(heteml)では何の問題もなくローディングバーが表示されていた。</li>
<li>本番環境(海外のよくわからんサーバー)にアップするとローディングバーの挙動がわけわからんようになった。</li>
<li>FFだと常に100％表示で、IEとかChromeだと常に0％表示になってしまう。</li>
</ul>
<hr />
<p>数日悩んだ後、飲み会の席で某HIGE先生に相談したら1分で解決してくれました。</p>
<blockquote><p>「サーバーがHttpヘッダにContentLength返さない仕様だとbytesTotalがおかしくなるよ」<br />
「ブラウザごとで解釈が違うと思うよ」</p></blockquote>
<hr />
<p>サーバー側がContentLengthを返さないのが原因かもとのこと。<br />
対策としては、あらかじめ読み込むファイルのサイズがわかってるなら、bytesTotalを使わずにバイト数を決め打ちで入力しておく。<br />
ファイルサイズがわからんのなら、いっそ％表示のないポンデリングローダーにしちゃう。<br />
そんな感じでOK。</p>
<hr />
<p>ちなみに実はAS3のリファレンスにも書いてありました。</p>
<blockquote><p>ダウンロードデータの合計バイト数を示します。このプロパティは、ロード操作の進行中は 0 を格納し、操作が完了した時点で設定されます。また、Content-Length ヘッダーがない場合、bytesTotal の値が不確定になります。 </p></blockquote>
<p>URLLoaderのbytesTotalの項目に書かれています。<br />
がしかし、LoaderInfoのbytesTotalの項目にはこれ書いてないんですよね。。。<br />
今回はswfの読み込みで発生したので、LoaderInfoのbytesTotalも同様の現象が起きますよ、ということ。<br />
なんともいやらしい罠でした。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1577/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

